我有 3 张桌子
User(id,email)
Org(id,name)
Role(id,user_id,org_id,role)
Ajax请求发送参数
org[name] test
org[user][email] test@test.com
在我的控制器中
def create
client_org = Org.new(client_org_params)
respond_to do |format|
@client_org.valid?
if !@client_org.errors.blank?
format.json { render json: @client_org.errors, status: :unprocessable_entity }
elsif Org.saveClientOrg(@client_org)
end
end
private
def client_org_params
params.require(:client_org).permit(:name,user_attributes: [:email])
end
在组织模型中
def self.saveClientOrg(orgData)
org=ClientOrg.new(orgData.name)//-->okay I got name: test
orgData.user.email //error? undefined method `user' for #<Org>
end
看起来像这行代码:orgData.user.email 不正确。
当我将 2 个输入字段留空并提交表单 ==> 表单验证时说只有名称为空白并忽略电子邮件。尽管在模型 user.rb 我设置验证:电子邮件,存在:真有人帮我吗?提前致谢
编辑
User.rb
has_many :roles
has_many :orgs, through: :roles
default_scope -> { order('email ASC') }
validates_format_of :email, :with => Devise.email_regexp
validates :email, presence: true
Org.rb
has_many :roles
has_many :users, through: :roles
validates :name, presence: true , uniqueness: { case_sensitive: false }
Role.rb
belongs_to :user
belongs_to :org