0

我有一个基本的任务管理应用程序。它有一个名为 Task 的类,我用它来跟踪任务。它有另一个名为 User 的类,我用于身份验证。

Task 有一个名为“user_email”的变量,而 User 有一个名为“email”的变量。我想将这些变量用作foreign_keys。某些任务“user_email”可能实际上并不属于某个用户。我不希望这些关联是依赖的。

我现在想关联具有许多任务的用户。然后在用户显示页面上显示用户任务。

4

3 回答 3

1

要关联具有许多任务的用户,请将以下行添加到您的用户模型中:

has_many :tasks

现在你还需要照顾协会的另一端。(即用户的任务)大概您的任务只有一个用户?在这种情况下,任务模型将需要以下行:

belongs_to :user

要了解有关 Rails 中关联的更多信息,我建议您查看 Rails 指南: http: //guides.rubyonrails.org/association_basics.html

于 2013-06-24T23:47:21.360 回答
0

确实想使用 ID 而不是电子邮件来识别任务的所有者。就像是

class Task
  belongs_to :user
end

class User
  has_many :tasks
end

这需要您将一个整数字段添加user_id到任务表中。


如果您想使用电子邮件来识别用户的任务,您仍然可以使用

class User
  has_many :tasks, :conditions => ['user_email = #{self.email}']
end
于 2013-06-24T23:48:56.740 回答
0

不确定这是否是处理此问题的最佳方法,但这是我目前正在做的......

我基本上想在他们的显示页面上显示 user_email 与当前登录用户的电子邮件相同的任务。

在 users_controller.rb

def show
  @user = User.find(params[:id])
  @tasks = Task.where(:user_email => @user.email)
end

在 users/show.html.erb

<h1><%= @user.name %></h1>
<% @tasks.each do |task| %>
  <%= task.title %><br />
<% end %>

所以我在不关联模型的情况下完成了我想做的事情。如果有人可以提出更好的方法来做到这一点,请继续。

于 2013-06-25T00:38:03.487 回答