0

我有 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
4

1 回答 1

0

orgData您的org模型的活动记录对象对吗?

所以在 org.rb 你需要这样做

orgData.users.email

用户应该是复数users

于 2013-10-23T08:53:19.530 回答