16

Raylarda çok fazla ilişki var. Tüm veritabanı tabloları buna göre ve uygun şekilde adlandırılmıştır. Tüm model dosyaları çoğul ve kelimeleri ayırmak için alt çizgi kullanın. Tüm adlandırma kurallarını yakut ve ray standartları takip etmektedir. Kullandığım modellerde şu kadar var:ActiveRecord :: HasManyThroughAssociationNotFoundError UserController # welcome

Bu hata başka ne olabilir? has_many :through kullanırken

ActiveRecord::HasManyThroughAssociationNotFoundError in UsersController#welcome Could not find the association :users_posts in model Post

+0

: http://stackoverflow.com/questions/944126/rails-has sadece basit bir tablo katılmak istiyorsanız

, eski HABTM sözdizimi kullanımı daha kolay -birçok-rağmen-sorunu – 18bytes

cevap

36

ayrı bir dernek olarak modeli katılmak tanımlamak gerekir: Eğer katılmak modeli kendisi veya eğer ilgilidir verileri tutmak için gerektiğinde

class Post < ActiveRecord::Base 
    has_many :user_posts 
    has_many :users, :through => :user_posts 
end 

class User < ActiveRecord::Base 
    has_many :user_posts 
    has_many :posts, :through => :user_posts 
end 

class UserPost < ActiveRecord::Base 
    belongs_to :user # foreign_key is user_id 
    belongs_to :post # foreign_key is post_id 
end 

Bu en iyi şekilde çalışır Diğer iki modelden ayrı olarak birleştirmede doğrulama yapmak istersiniz. Tamamen aynı sorun burada çözüldü

class User < ActiveRecord::Base 
    has_and_belongs_to_many :posts 
end 

class Post < ActiveRecord::Base 
    has_and_belongs_to_many :users 
end