好的,我的模型是这样的:
Team
has_many :users, :through => memberships
User
has_one :user_status
现在在我的团队模型中,我希望能够找到我的 'user_status'
模型的最大 'updated_at'
值。
我试过做类似的事情:
Team
has_many :users, :through => :memberships
has_many :user_statuses, :through => :users
def max_last_updated_status
user_statuses.maximum(:updated_at)
end
但这给了我:
Invalid source reflection macro :has_one for has_many :user_statuses, :through => :users. Use :source to specify...
所以我想知道是否有更好的方法来做到这一点,我可以只创建一个 User 模型的属性,例如:
def status_updated_at
user_status.updated_at
end
然后将我的团队类更改为:
def max_last_updated_status
user.maximum(:status_updated_at)
end
?我假设不是,因为 'status_updated_at'
不是真正的列,因此 sql 生成会失败...
如果能从另一个角度看待这个问题,我们将不胜感激。
最佳答案
我会这样做:
团队
has_many :users, :through => memberships
def max_last_updated_status
users.map{|user| user.user_status.updated_at}.max
end
用户
has_one :user_status
max_last_updated_status 方法应该返回团队中用户的最大 updated_at。
关于ruby-on-rails - 在 Model.calculate 方法中使用属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1333696/