在另一个模型上调用表单记录

时间:2016-01-22 13:06:27

标签: ruby-on-rails forms

我完全坚持如何做到这一点,希望有人可以指出我正确的方向。我有一个铁路应用程序,有机组成员,这是部门的一部分,每个都有职位。我希望制作一个主列表功能,其中创建一个页面,其中包含所有机组成员的姓名及其各自的位置,按部门分组。在创建阶段,我希望用户能够从列表中删除他们不想打印的名称。但是,我不希望删除实际的机组成员。任何见解都会很棒。

1 个答案:

答案 0 :(得分:2)

您可以通过运行:visible来添加名为rails generate migration add_visible_to_crewmembers visible:boolean的字段。

为您的迁移添加默认值(true,因为您希望机组人员能够正常看到):

def up
  change_column :visible, :boolean, default: true
end

def down
  change_column :visible, :boolean, default: nil
end

通过运行rake db:migrate将这些更改保留到您的数据库中。

之后,您可以在Crewmember模型(apps/models/crewmember.rb)中创建一个范围,仅返回可见的机组成员,如下所示:

class Crewmember < ActiveRecord::Base
  belongs_to :department
  [...]
  scope :visible, where(visible: true)
end

在您的控制器中,使用此范围而不是默认范围(例如,使用#all):

def index
  # Before:
  # @crewmembers = Crewmember.all
  # @crewmembers.size => 10
  @crewmembers = Crewmember.visible
  # @crewmembers.size => 5
end