2017-06-20 71 views
0

我有一个类地址,其中Organismereferent和Organisme有has_manybelongs_to的关系。也Organismereferent和Organisme可以accepts_nested_attributes_for :addresses两个不同的类使用一个类的accepted_nested_attributes

我的问题是,当我只有Organismereferent类一切工作正常,我能够创建一个新的Organismereferent地址,但只要我创建并添加了相同的关系Organisme,他们都停不给任何错误信息的工作,我只在控制台中看到这一点: enter image description here

我的模型:

class Organismereferent < ApplicationRecord 
    has_many :addresses 
    has_many :referents 
    accepts_nested_attributes_for :addresses 
end 

class Organisme < ApplicationRecord 
    has_many :addresses 
    accepts_nested_attributes_for :addresses 
end 

class Address < ApplicationRecord 
    belongs_to :organismereferent 
    belongs_to :organisme 
end 

控制器Organisme

def new 
    @organisme = Organisme.new 
    @organisme.addresses.build 
end 

def create 
    @organisme = Organisme.new(organisme_params) 
    @organisme.status = true 
    @organisme.save 
    redirect_to @organisme 
end 

private 
    def organisme_params 
    params.require(:organisme).permit(:nom, :telephone, :courriel, :fax, addresses_attributes: [:id, :no_civique, :rue, :ville, :province, :etat, :code_postal]) 
    end 

控制器Organismereferent:

def new 
    @organisme = Organismereferent.new 
    @organisme.addresses.build 
end 

def create 
    @organisme = Organismereferent.new(organisme_params) 
    @organisme.active = true 
    @organisme.save 
    redirect_to @organisme 
end 

private 
    def organisme_params 
     params.require(:organismereferent).permit(:nom_organisation, :bureau, :telecopie, :courriel, :site_web, addresses_attributes: [:id, :no_civique, :rue, :ville, :province, :etat, :code_postal]) 
    end 

我不知道还有什么信息可能是重要的,所以我会很高兴来添加任何东西。

+0

你能告诉我们错误消息的地址模式? '@ organisme.save!'会显示错误信息。 –

+0

@JunanChakma它给了我这个'验证失败:地址organisme必须存在' – CNuts

回答

1

尝试改变像

class Address < ApplicationRecord 
    belongs_to :organismereferent, optional: true 
    belongs_to :organisme, optional: true 
end 
+0

非常感谢你,它完美的作品:D是因为它试图让他们都为每个地址,并通过添加它们是可选的它允许它只有其中一个? – CNuts

+1

由于在创建时“地址”验证存在'organisme',因此它不起作用。但是由于其父母'organisme'在创建'address'时还没有创建。这就是为什么它给这个验证错误。 –

相关问题