【发布时间】:2015-03-30 19:30:23
【问题描述】:
我使用 devise 作为我的身份验证框架。我有一个属于_to:user的报告模型和一个has_many:reports的用户模型。当我将报告状态设置/相同为“关闭”时,我想将当前用户保存为“关闭”报告的用户,该用户可能不是创建报告的用户。因此,我在报告调制解调器中添加了另一列,名为 closed_by_user_id:integer:index。我不确定如何使用标准模型用户关联来实现这一点。所以我添加了一些代码来在“关闭”报告时将 current_user 保存到记录中。然后这会显示在表格中。然后我想显示创建报告的用户(它使用魔术设计助手自动执行)和我想显示“关闭”报告的用户。这不会自动工作,或者至少我不知道该怎么做。因此,我尝试在关闭/保存报告的索引视图迭代报告时使用当前用户在用户模型上调用 find 方法。我得到一个 ActiveRecord Relation 和一个 true 值。 rails 控制台中的查询我确实得到了正确的记录,但是 puts u.name 输出“用户”。不知道从这里去哪里。以前玩过这个更复杂场景的人有什么想法吗?我非常感谢有关这方面的教育。谢谢
class User < ActiveRecord::Base
# Include default devise modules. Others available are:
# :confirmable, :lockable, :timeoutable and :omniauthable
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :trackable, :validatable, :timeoutable
has_many :reports
end
class Report < ActiveRecord::Base
belongs_to :user
end
2.2.1 :011 > u = User.where(id: 2)
User Load (0.3ms) SELECT `users`.* FROM `users` WHERE `users`.`id` = 2
=> #<ActiveRecord::Relation [#<User id: 2, name: "Test User", username: "tuser", email: "testuser@mail.com", encrypted_password: "$2a$10$BuPxu4JKZeVSK2AR6DaNT.KthntX0lb3SmAFq5I5mID...", reset_password_token: nil, reset_password_sent_at: nil, remember_created_at: nil, sign_in_count: 1, current_sign_in_at: "2015-03-30 19:04:10", last_sign_in_at: "2015-03-30 19:04:10", current_sign_in_ip: "127.0.0.1", last_sign_in_ip: "127.0.0.1", failed_attempts: 0, unlock_token: nil, locked_at: nil, created_at: "2015-03-30 19:04:09", updated_at: "2015-03-30 19:04:10">]>
2.2.1 :012 > u.name
=> "User"
2.2.1 :013 >
【问题讨论】:
标签: ruby-on-rails associations rails-activerecord