Ruby on Rails中,如何使用HABTM关联实现长尾词的查询?

2026-04-11 19:111阅读0评论SEO问题
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计467个文字,预计阅读时间需要2分钟。

Ruby on Rails中,如何使用HABTM关联实现长尾词的查询?

到目前為止,我對HABTM的實現工作如下:`has_and_belongs_to_many`。通知和隱私都繼承了`Reference`。偏愛使用STI。我想要試試使用`has_many`,通過關聯代替。模型文件如下:

rubyclass User 到目前为止,我目前的HABTM实现工作:has_and_belongs_to_many.通知和隐私都继承自Preference.偏好是STI.我想尝试使用:has_many,:通过关联代替.

Ruby on Rails中,如何使用HABTM关联实现长尾词的查询?

模型文件

class User < ActiveRecord::Base has_and_belongs_to_many :preferences end class Preference < ActiveRecord::Base has_and_belongs_to_many :users end class Notification < Preference end class Privacy < Preference end

迁移文件

class UsersHaveAndBelongToManyPreferences < ActiveRecord::Migration def self.up create_table :preferences_users, :id => false do |t| t.references :preference, :user t.timestamps end end def self.down drop_table :preferences_users end end class CreatePreferences < ActiveRecord::Migration def self.up create_table :preferences do |t| t.string :title t.text :description t.string :type t.timestamps end end def self.down drop_table :preferences end end class DeviseCreateUsers < ActiveRecord::Migration def self.up create_table(:users) do |t| t.string :name t.timestamps end end def self.down drop_table :users end end

我尝试了以下内容

class User < ActiveRecord::Base has_many :preferences, :through => :preferences_users end class Preference < ActiveRecord::Base has_many :users, :through => :preferences_users end

我的表格看起来像

<% Preference.where(:type => 'Notification').all.each do |notification| %> <li> <%= check_box_tag 'user[preference_ids][]', notification.id, @user.preference_ids.blank? ? false : @user.preferences.include?(notification) %> <%= label_tag notification.description %> </li> <% end %>

我明白了

Could not find the association :preferences_users in model User

我究竟做错了什么?是我的形式还是我的协会中的问题?

好的,它得到了它的工作.我需要一个模型PreferencesUser,并且在用户和偏好模型上缺少has_many:preferences_users:

class PreferencesUser < ActiveRecord::Base belongs_to :user belongs_to :preference end class User < ActiveRecord::Base has_many :preferences_users has_many :preferences, :through => :preferences_users end class Preference < ActiveRecord::Base has_many :preferences_users has_many :users, :through => :preferences_users end

没有必要改变我的形式.希望这有助于某人

本文共计467个文字,预计阅读时间需要2分钟。

Ruby on Rails中,如何使用HABTM关联实现长尾词的查询?

到目前為止,我對HABTM的實現工作如下:`has_and_belongs_to_many`。通知和隱私都繼承了`Reference`。偏愛使用STI。我想要試試使用`has_many`,通過關聯代替。模型文件如下:

rubyclass User 到目前为止,我目前的HABTM实现工作:has_and_belongs_to_many.通知和隐私都继承自Preference.偏好是STI.我想尝试使用:has_many,:通过关联代替.

Ruby on Rails中,如何使用HABTM关联实现长尾词的查询?

模型文件

class User < ActiveRecord::Base has_and_belongs_to_many :preferences end class Preference < ActiveRecord::Base has_and_belongs_to_many :users end class Notification < Preference end class Privacy < Preference end

迁移文件

class UsersHaveAndBelongToManyPreferences < ActiveRecord::Migration def self.up create_table :preferences_users, :id => false do |t| t.references :preference, :user t.timestamps end end def self.down drop_table :preferences_users end end class CreatePreferences < ActiveRecord::Migration def self.up create_table :preferences do |t| t.string :title t.text :description t.string :type t.timestamps end end def self.down drop_table :preferences end end class DeviseCreateUsers < ActiveRecord::Migration def self.up create_table(:users) do |t| t.string :name t.timestamps end end def self.down drop_table :users end end

我尝试了以下内容

class User < ActiveRecord::Base has_many :preferences, :through => :preferences_users end class Preference < ActiveRecord::Base has_many :users, :through => :preferences_users end

我的表格看起来像

<% Preference.where(:type => 'Notification').all.each do |notification| %> <li> <%= check_box_tag 'user[preference_ids][]', notification.id, @user.preference_ids.blank? ? false : @user.preferences.include?(notification) %> <%= label_tag notification.description %> </li> <% end %>

我明白了

Could not find the association :preferences_users in model User

我究竟做错了什么?是我的形式还是我的协会中的问题?

好的,它得到了它的工作.我需要一个模型PreferencesUser,并且在用户和偏好模型上缺少has_many:preferences_users:

class PreferencesUser < ActiveRecord::Base belongs_to :user belongs_to :preference end class User < ActiveRecord::Base has_many :preferences_users has_many :preferences, :through => :preferences_users end class Preference < ActiveRecord::Base has_many :preferences_users has_many :users, :through => :preferences_users end

没有必要改变我的形式.希望这有助于某人