Domanda

Sto lavorando a un'app Rails che fungerà da sistema di autenticazione per altre app Rails tramite la funzionalità ActiveResource di Rails.

L'app di autenticazione ha un modello ActiveRecord chiamato User. L'app client ha un modello ActiveResource chiamato user.save. So che nell'app client posso fare cose come has_many :contacts e eseguirà un'operazione PUT usando XML su HTTP.

Ma cosa succede se voglio inserire nel modello contacts della mia applicazione client Contact o qualcosa del genere (<=> essendo un modello ActiveRecord nell'app client)? Quindi vorrei fare cose come ottenere tutti i <=> s che appartengono ad alcuni <=>.

È possibile?

(Ho notato che una domanda simile è stato chiesto, ma non c'erano molte risposte.)

È stato utile?

Soluzione

Risposta breve: no. Le classi coinvolte in has_many, belongs_to, has_and_belongs_to_many vivono in ActiveRecord e creano query SQL per far funzionare le associazioni.

Detto questo, puoi far sembrare che ci sia un'associazione, devi solo scrivere i tuoi metodi. Qual è stata la risposta più votata a quella domanda a cui ti sei collegato.

Quindi, aggiungi una colonna al tuo modello di contatto che sia user_id o qualsiasi chiave tu debba passare al tuo User.find modello ActiveResource e potresti far parte del contratto di associazione in questo modo:

class User < ActiveResource::Base
  # boilerplate ActiveResource url stuff

  def contacts
    Contact.find(:all, :conditions => { :user_id => self.id })
  end
end

class Contact < ActiveRecord::Model
  def user
    User.find_by_user_id(self.user_id)
  end
end

C'è molto di più che ottieni da <=> gratuitamente, ma questa è la sostanza.

Altri suggerimenti

Questa domanda è antica, ma di recente mi sono imbattuto in questo:

http://yetimedia.tumblr.com/ postale / 35233051627 / ActiveResource-è-morto-lungo-live-ActiveResource

Dal post:

  

Supporto di base per le associazioni: has_many, has_one, appartiene_to ora può essere utilizzato nei modelli ActiveResource.

Ci sono altri miglioramenti notati nel post che potrebbero giustificare una seconda occhiata ad ActiveResource anche se è stato rimosso da Rails 4.0.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top