Saya mencoba untuk mendapatkan kepalaku inverse_of
dan saya tidak mengerti.
Seperti apa bentuk sql yang dihasilkan, jika ada?
Apakah inverse_of
pilihan menunjukkan perilaku yang sama jika digunakan dengan :has_many
, :belongs_to
, dan :has_many_and_belongs_to
?
Maaf jika ini pertanyaan mendasar.
Saya melihat contoh ini:
class Player < ActiveRecord::Base
has_many :cards, :inverse_of => :player
end
class Card < ActiveRecord::Base
belongs_to :player, :inverse_of => :cards
end
ruby-on-rails
activerecord
Federico
sumber
sumber
Saya pikir
:inverse_of
ini sangat berguna ketika Anda bekerja dengan asosiasi yang belum ada. Misalnya:Sekarang, di konsol:
Tanpa
:inverse_of
argumen,t.project
akan kembalinil
, karena memicu kueri sql dan data belum disimpan. Dengan:inverse_of
argumen, data diambil dari memori.sumber
:inverse_of
memecahkan masalah bagi saya saat membuat entitas induk dan anak baru dalam bentuk yang sama.Setelah pr ini ( https://github.com/rails/rails/pull/9522 ) inverse_of tidak diperlukan dalam kebanyakan kasus.
Rekaman Aktif mendukung identifikasi otomatis untuk sebagian besar asosiasi dengan nama standar. Namun, Rekaman Aktif tidak akan secara otomatis mengidentifikasi asosiasi dua arah yang berisi lingkup atau salah satu dari opsi berikut:
Dalam contoh di atas, referensi ke objek yang sama disimpan dalam variabel
a
dan atributwriter
.sumber
inverse_of
atau tidak, hasilnyaa.first_name == b.author.first_name
adalah selalu mendatang.Hanya pembaruan untuk semua orang - kami baru saja menggunakan
inverse_of
salah satu aplikasi kami dengan sebuahhas_many :through
asosiasiIni pada dasarnya membuat objek "asal" tersedia untuk objek "anak"
Jadi jika Anda menggunakan contoh Rails:
Menggunakan
:inverse_of
akan memungkinkan Anda untuk mengakses objek data yang kebalikannya, tanpa melakukan query SQL lebih lanjutsumber
Ketika kami memiliki 2 model dengan hubungan has_many dan hers_to, selalu lebih baik menggunakan inverse_of yang memberi tahu ActiveRecod bahwa mereka memiliki sisi yang sama dengan asosiasi. Jadi, jika kueri dari satu sisi dipicu, ia akan melakukan cache dan melayani dari cache jika itu dipicu dari arah yang berlawanan. Yang meningkatkan kinerja. Dari Rails 4.1, inverse_of akan diatur secara otomatis, jika kita menggunakan foreign_key atau perubahan nama kelas, kita perlu mengatur secara eksplisit.
Artikel terbaik untuk detail dan contoh.
http://viget.com/extend/exploring-the-inverse-of-option-on-rails-model-associations
sumber
Lihatlah artikel ini !!
http://gsusmonzon.blogspot.com.br/2011/09/rails-power-of-inverseof.html
sumber
Jika Anda memiliki
has_many_through
hubungan antara dua model, Pengguna dan Peran, dan ingin memvalidasi Penugasan model penghubung dengan entri yang tidak ada atau tidak valid denganvalidates_presence of :user_id, :role_id
, itu berguna. Anda masih dapat menghasilkan Pengguna @ pengguna dengan asosiasinya@user.role(params[:role_id])
sehingga menyimpan pengguna tidak akan menghasilkan validasi gagal model Penugasan.sumber
Silakan lihat 2 dua sumber daya yang berguna
Dan ingat beberapa batasan
inverse_of
:sumber