我有一个基本的任务管理应用程序。它有一个名为Task的类,我用它来跟踪任务。它有另一个名为User的类,我用它进行身份验证。
Task有一个名为'user_email'的变量,User有一个名为'email'的变量。我想将这些变量用作foreign_keys。某些任务'user_email'可能实际上不属于用户。我不希望这些关联依赖。
我现在想要关联有很多任务的用户。然后在用户显示页面上显示用户任务。
答案 0 :(得分:1)
要关联具有多个任务的用户,请将以下行添加到您的用户模型中:
has_many :tasks
现在你还需要照顾协会的另一面。 (即用户的任务)大概你的任务只有一个用户?在这种情况下,任务模型将需要以下行:
belongs_to :user
要详细了解Rails中的关联,建议您查看Rails指南:http://guides.rubyonrails.org/association_basics.html
答案 1 :(得分: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
答案 2 :(得分: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 %>
所以我在不关联模型的情况下完成了我想做的事情。如果有人可以建议更好的方法来做到这一点,请继续。