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