ruby-on-rails - 在 Model.calculate 方法中使用属性?

标签 ruby-on-rails database activerecord

好的,我的模型是这样的:

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/

相关文章:

ruby-on-rails - Rails 序列化关联而不是 has_many 通过

ruby-on-rails - created_at 的 Rspec/FactoryGirl 测试顺序

mysql - MySQL建表时有两个主键

ruby-on-rails - ruby /rails : Convert array of arrays to hash of arrays

mysql - (ActiveRecord) update_attributes 不更新数据库记录

ruby-on-rails - 在 Rails 中,belongs_to 上有 has_one 吗?

ruby-on-rails - 设计——如何用lockable锁定一个账户?

javascript - 我对 Node.js 集成非常陌生

java - Ehcache 与 DB 持久化设计

ruby-on-rails - 如何从 URL 中删除/发布/?