在Ruby中创建具有50个美国州的应用程序复选框

时间:2015-12-07 13:34:36

标签: ruby ruby-on-rails-4

我对RoR很新,我正在尝试创建一个应用程序,用户可以在其中多选状态(复选框)并保存选择(想想“我曾经做过什么样的状态”)。在创建具有这些属性的类时,接近脚手架并使其显示的最佳方法是什么?我认为把所有50个州放在脚手架上可能不是正确的方法。

1 个答案:

答案 0 :(得分:0)

您可以在模型中使用数组列存储状态的ID,但这不是一个好的解决方案。

我要说的最佳解决方案是创建一个中间表(因为一个状态可由多个用户检查,用户可以检查多个状态),并使用与之关联的模型:

class User < ActiveRecord::Base
  belongs_to :state_check
  has_many :states, through: :state_checks
end

class StateCheck < ActiveRecord::Base
  belongs_to :user
  belongs_to :state
end

class State < ActiveRecord::Base
  belongs_to :state_check
  has_many :users, through: :state_checks
end

通过这种方式,您可以执行以下操作:

@user.states

最终你可以在state_check表中为关系添加更多东西。

您可能应阅读:http://guides.rubyonrails.org/association_basics.html#the-has-many-through-association