两个has_many:通过关系

时间:2015-03-20 15:34:01

标签: ruby-on-rails

我有两个模型DriverBlock,它们通过两个has_many :through关系互动:

Driver有许多BlocksPermanent

Driver有许多BlocksAvailable

在视图中,我有一个块的集合,看起来像这样:

<%= check_box_tag("driver[block_ids][]", block.id) %>

当我只有一个“通过”模型“可用”时,这很有效,但是当我有两个时,它是如何工作的?


另一种方法是使用一个“尽管”模型Available,它有一个名为“permanent”的布尔值,表示它是否是另一种类型。

但我不知道如何使用视图中的复选框传递布尔值。目前,复选框决定了HABTM风格的链接是否存在,但是没有额外的参数。

<%= check_box_tag("driver[block_ids][]", block.id) %>

第三种方法是使用嵌套表单创建每个PermanentAvailable链接。

我可以为每个PermanentAvailable创建一个表单,每个表单都有一个隐藏的“block_id”参数。这将导致页面上超过100个表单,这感觉不对,但它可能会有效。

1 个答案:

答案 0 :(得分:0)

也许你可以尝试只有一个关联,然后你就可以创建一个可用和永久的范围。

has_many Blocks

scope :available, -> { where(available: true) }
scope :permanent, -> { where(permanent: true) }