dep*_*uid 2 activerecord ruby-on-rails
假设我有拥有项目的用户:
class User < ActiveRecord::Base
has_many :items
end
Run Code Online (Sandbox Code Playgroud)
class Item < ActiveRecord::Base
belongs_to :user
end
Run Code Online (Sandbox Code Playgroud)
现在我想向 item 添加一个类方法以创建自定义记录:
def self.create_personalized
create description: "#{user.name}' item"
end
Run Code Online (Sandbox Code Playgroud)
但是当然,由于这是一个类方法,因此user是未定义的。但是如果我用 using 调用它user.items.create_personalized,那么通过关系有一个关联的用户。我知道这Item.create_personalized是知道用户,因为这有效:
def self.create_personalized
item = create
item.update_attribute :description, "#{item.user.name}'s item"
end
Run Code Online (Sandbox Code Playgroud)
但显然这不是访问所有者对象的最佳方式。正确的方法是什么?
如果你这样做
Item.scope_attributes
Run Code Online (Sandbox Code Playgroud)
然后您将获得适用于 item 的当前作用域中任何属性的哈希值。如果您调用create. 这些是数据库级别的属性,因此您将获得用户 ID 而不是用户本身。
| 归档时间: |
|
| 查看次数: |
330 次 |
| 最近记录: |