我希望能够为我的用户分配类别(最多 2 个,允许 1 个)。我希望此用户的任何帖子仅从同一类别列表中分配一个类别(在我的应用程序中称为职业)。
目前,我已经对其进行了配置,以便我可以为每个分配 1,在用户、帖子和专业模型之间具有简单的 belongs_to 和 has_many 关联。这适用于帖子,因为它只需要 1 个专业分配,但对于用户来说,它限制了 2 个的能力。
用户的视图有两个下拉列表,由专业中的项目填充。我可以选择两种不同的职业,但只有一种保留了该职业的价值,我希望它保留这两种职业,或者如果只选择一种,则只接受一种。我的主要限制是,在用户数据库中,只有一个职业列引用了职业 ID。无法复制职业栏,如何设置才能添加第二个职业栏?
或者,我应该如何改变我的数据库设计和模型来完成这个?
用户.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
职业.rb:
class Profession < ActiveRecord::Base
attr_accessible :name
has_many :posts
has_many :users
end