Je veux accéder à un schéma de base de données existante de Rails. J'ai une table NAGIOS_OBJECTS avec une clé primaire OBJECT_ID et une table NAGIOS_HOST_CHECKS qui fait référence à NAGIOS_OBJECTS avec une colonne HOST_OBJECT_ID. Je ainsi défini les relations comme suit:Rails Problème avec des associations en utilisant les options de PRIMARY_KEY + foreign_key
class NagiosObject < ActiveRecord::Base
has_one :nagios_host_check, :foreign_key => :host_object_id, :primary_key => :object_id
end
class NagiosHostCheck < ActiveRecord::Base
belongs_to :nagios_object, :foreign_key => :host_object_id, :primary_key => :object_id
end
Cependant, lors de l'appel a_nagios_object.nagios_host_check ou a_nagios_host_check.nagios_object, je reçois toujours nul.
Toute idée de ce qui ne va pas avec mon code?
Merci. Cela a résolu! Cependant, lors de la création d'un objet à l'aide nagios_host_check NagiosHostCheck.create (: nagios_object => NagiosObject.create()), il ne récupère pas le droit id. Au lieu de cela, je dois faire NagiosHostCheck.create (: host_object_id => NagiosObject.create() id.) – elasticsecurity
semble qu'il y a des effets secondaires étranges puisque ma colonne est appelée object_id et donc potentiellement en conflit avec une méthode Ruby natif – elasticsecurity
@elasticsecurity Je pense vous avez raison, le problème réside dans le fait que ': object_id' signifie quelque chose de spécial pour Rails/Ruby et que l'utilisation de chaînes contourne ce problème. Mais 'foreign_key' et' primary_key' n'ont pas besoin d'être affectés à 'Strings'. Je préfère utiliser des symboles, c'est plus propre et plus cohérent avec le reste des missions Rails. –