ユーザーにカテゴリを割り当てられるようにしたい(最大2つ、1つを許可)。このユーザーによる投稿には、同じカテゴリのリスト(私のアプリでは職業と呼ばれます)から1つのカテゴリのみを割り当てたいと思います。
現在、ユーザー、投稿、および職業モデル間に単純なbelongs_toおよびhas_manyの関連付けを使用して、それぞれに1を割り当てることができるように構成しています。これは、1つの職業の割り当てしか必要としないため、投稿には問題なく機能しますが、ユーザーには2つの能力が制限されます。
ユーザーのビューには、職業のアイテムが入力された2つのドロップダウンリストがあります。2つの異なる職業を選択できますが、職業の価値を保持するのは1つだけです。両方を保持するか、1つだけが選択されている場合は1つだけを受け入れます。私の主な制限は、ユーザーデータベースには、profession_idを参照するprofession列が1つしかないことです。職業列を複製できないので、2番目の職業フィールドを追加できるように設定するにはどうすればよいですか?
または、これを実現するためにデータベースの設計とモデルをどのように変更する必要がありますか?
user.rb:
class User < ActiveRecord::Base
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :trackable, :validatable
attr_accessible :email,
:password,
:password_confirmation,
:remember_me,
:first_name,
:last_name,
:profile_name,
:full_bio,
:mini_bio,
:current_password,
:photo,
:profession_id
attr_accessor :current_password
validates :first_name, :last_name, :profile_name, presence: true
validates :profile_name, uniqueness: true,
format: {
with: /^[a-zA-Z0-9_-]+$/
}
has_many :posts
belongs_to :profession
has_attached_file :photo,
:default_url => 'default.png'
def full_name
first_name + " " + last_name
end
end
post.rb:
class Post < ActiveRecord::Base
attr_accessible :content, :name, :user_id, :profession_id
belongs_to :user
belongs_to :profession
validates :content, presence: true,
length: { minimum: 2 }
validates :name, presence: true,
length: { minimum: 2 }
validates :user_id, presence: true
end
profession.rb:
class Profession < ActiveRecord::Base
attr_accessible :name
has_many :posts
has_many :users
end