我有一个基本的任务管理应用程序。它有一个名为 Task 的类,我用它来跟踪任务。它有另一个名为 User 的类,我用于身份验证。
Task 有一个名为“user_email”的变量,而 User 有一个名为“email”的变量。我想将这些变量用作foreign_keys。某些任务“user_email”可能实际上并不属于某个用户。我不希望这些关联是依赖的。
我现在想关联具有许多任务的用户。然后在用户显示页面上显示用户任务。
我有一个基本的任务管理应用程序。它有一个名为 Task 的类,我用它来跟踪任务。它有另一个名为 User 的类,我用于身份验证。
Task 有一个名为“user_email”的变量,而 User 有一个名为“email”的变量。我想将这些变量用作foreign_keys。某些任务“user_email”可能实际上并不属于某个用户。我不希望这些关联是依赖的。
我现在想关联具有许多任务的用户。然后在用户显示页面上显示用户任务。
要关联具有许多任务的用户,请将以下行添加到您的用户模型中:
has_many :tasks
现在你还需要照顾协会的另一端。(即用户的任务)大概您的任务只有一个用户?在这种情况下,任务模型将需要以下行:
belongs_to :user
要了解有关 Rails 中关联的更多信息,我建议您查看 Rails 指南: http: //guides.rubyonrails.org/association_basics.html
您确实想使用 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
不确定这是否是处理此问题的最佳方法,但这是我目前正在做的......
我基本上想在他们的显示页面上显示 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 %>
所以我在不关联模型的情况下完成了我想做的事情。如果有人可以提出更好的方法来做到这一点,请继续。