【问题标题】:has_many conditions with an argumenthas_many 带有参数的条件
【发布时间】:2012-10-08 20:22:48
【问题描述】:

我有以下型号:

Trip -> has_many trip_members & belongs_to user
Trip -> has_many shares
Share -> belongs_to user

在我的旅行模型中,我正在建立这样的关系

has_many :shares, :conditions => proc { |user| {:user_id => user.id} }

这样我总是有一个与共享关联的用户。我试图通过在调用 trip.shares(user) 时传入一个用户对象来访问它,但这似乎不起作用。这个传递给 proc 的参数是如何工作的?

另外,这是设置条件的正确方法吗?我想过重写生成的方法(例如 trip.shares

【问题讨论】:

  • 您确定不想说用户has_many :trips, :through => :shares 吗?
  • @CodeGnome 有点不同。一个行程将由一个用户创建,但它会有很多行程成员,每个行程成员可以与 n 个人共享行程。旅行成员和此次旅行的共享对象不同。我会尽量让我的问题更清楚

标签: ruby-on-rails ruby-on-rails-3 conditional-statements has-many


【解决方案1】:

条件不会改变创建关联对象的行为。它们只限制从数据库中查询的结果。

trip.shares.create(:user => user)

【讨论】:

  • 你确定吗?我认为当你创造时,条件也会出现。这不是您提到的finder_sql 的工作吗?我实际上希望能够将这个条件包含在我的所有代码条件中(不仅仅是专门用于查找)。有什么办法吗??
  • 我的理解是可以在不符合条件的协会中创建会员。我认为对创作没有影响。
  • 它在 rails 指南中提到在创建和构建操作期间也使用哈希条件。当然,只有当你通过模型。我迷路了!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多