2013-10-23 50 views
0

我有3個表軌驗證數據和獲取數據使用強參數

User(id,email) 
Org(id,name) 
Role(id,user_id,org_id,role) 

Ajax請求發送參數

org[name] test 
org[user][email] [email protected] 

在我的控制器

def create 
    client_org = Org.new(client_org_params) 
    respond_to do |format| 
    @client_org.valid? 
    if [email protected]_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 

在Org.model

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 
+0

請指定每個模型和視圖調用'控制器create'行動的協會。 – Leger

+1

我認爲你可以在本文中找到一些有關如何調試問題的好主意:http://nofail.de/2013/10/debugging-rails-applications-in-development/ – phoet

回答

0

orgData是你org模型的活動記錄的對象吧?

所以org.rb你需要這樣做

orgData.users.email

用戶應該是複數users

+0

我已經完成了它 – chinh

+0

你的代碼:orgData.users.email引發錯誤 - >未定義的方法'電子郵件'爲# chinh

+0

試試這個:'orgData.users.first.email' –