私は2つのテーブルを持っています。たとえば "Fruits"と "Food" Fruitsテーブルの新しいエントリを対応するモデルで作成すると、このオブジェクトと属性をAllという名前の他のテーブルに保存するにはどうすればよいですか?Ruby on Rails:モデルのオブジェクトと属性を別のテーブルに保存する
それ以上:新しいエントリを保存するときに別のテーブルを更新するにはどうすればよいですか?
私は
私は2つのテーブルを持っています。たとえば "Fruits"と "Food" Fruitsテーブルの新しいエントリを対応するモデルで作成すると、このオブジェクトと属性をAllという名前の他のテーブルに保存するにはどうすればよいですか?Ruby on Rails:モデルのオブジェクトと属性を別のテーブルに保存する
それ以上:新しいエントリを保存するときに別のテーブルを更新するにはどうすればよいですか?
私は
:あなたは「プライベート」を書きたくない場合だけ知っているので
class Fruits < ActiveRecord::Base
after_save :update_the_all_table
private
def update_the_all_table
allobject = All.find(self.id)
allobject.someattribute = self.someattribute # self is the fruit
allobject.save
end
end
は、あなたはまた、次の操作を行うことができます!
class Fruits < ActiveRecord::Base
after_save { |fruit|
allobject = All.find(fruit.id)
allobject.someattribute = fruit.someattribute
allobject.save
}
end
保存する前に?または保存した後にこれをそのまま使用しますか? –
ええ、可能性のあるコールバックについては、http://api.rubyonrails.org/classes/ActiveRecord/Callbacks.htmlを参照してください。 –
別のメドードで「プライベート」を使用する必要はありませんでした。メソッドの直前またはモデルの最初の行で? –
あなたが保存などのイベントに対してアクションを実行するためにCallbacksを使用することができます「ID = Xの更新値」のようなものを必要としています。
他のテーブルと同じ情報をすべて含むテーブルを作成しようとしているだけの場合は、データを異なる方法で照会するだけで十分です。あなたはこのような何かしなければならない
私はこれを知っていますが、他のテーブルのモデルにどうやってアクセスできますか? "id = xの更新値"のようなものが必要です –
@ Daniel Ruf:何らかの理由で他のテーブルにActiveRecordを使用できませんか? – cam
いいえ、しかし、私はどのように私は更新とmysqlのようにこれを行うことができます例が必要です...どこか...私はちょっと混乱して、ルビーの血まみれの初心者として、私は今まで知っていたが、私が知っていた)activerecordは初めに簡単ではなく、多くの多くのカスタムメソッドを追加しました。 –
この場合のベストプラクティスはobserversです。
1)あなたのGemfile
に入れる:
gem 'rails-observers'
2)ファイル名を指定して実行:あなたのapplication.rb
に追加)
class FruitObserver < ActiveRecord::Observer
def after_save(fruit)
# Any actions with other models and tables must stay here.
# Example:
All.create(
name: fruit.name,
entitable_type: fruit.class.to_s,
entitable_id: fruit.id
)
end
end
4:
bundle install
3)新しいファイルapp/models/fruit_observer.rb
を作成します。
config.active_record.observers = :fruit_observer
5)server/consoleを実行してこれをチェックしてください!
この質問はかなり古く、すでに回答済みです;-) –
私はあなたの他のコメントを読んでいます。もしあなたがRuby on Railsを初めて知りましたら、このチュートリアルを完成させることを強くお勧めします:http://ruby.railstutorial.org/ruby-on-rails-tutorialbook基本的には、一連のレール機能を備えたTwitterクローンを構築し、良いレールアプリケーションを作るための素早い方法を学びます。 –
には別のチュートリアルがありました –