ruby-on-rails - 在 ruby​​ on rails 3.2 中实现连接时出错

标签 ruby-on-rails ruby-on-rails-3 postgresql join

我在数据库中创建了两个表,即 products 和 shopping_list。 我已经为产品提供了 shopping_list 的外键引用,即 product.shopping_list_id。

我正在尝试在 ruby​​ on rails 中实现连接,但出现错误

我的routes.rb文件如下

Shop::Application.routes.draw do
  resources :shopping_lists do
    member do
     post 'add'
     get 'delete'
    end

    collection do
     get 'add'
     get 'joins'
     get 'list'     
     post 'get_shopping_lists'
    end
  end

  resources :shopping_lists

  # ---- Contact Routes ------

  resources :products do
    member do
     post 'add'
     get 'delete'
    end

    collection do
     get 'add'
     get 'list'  
     post 'get_products'   
    end
  end  

  resources :products

我的product.rb是

class Product < ActiveRecord::Base


        attr_accessible :id, :shopping_list_id, :product_name, :product_category, :quantity, :status

        # ------- ASSOCIATIONS --------

        belongs_to :shopping_list


        # ------ VALIDATIONS ------

        validates_presence_of    :id, :product_name

        validates_uniqueness_of  :id

        # -------- SCOPES ----------

        # scope :not_deleted, where("products.deleted = 0")

        # default_scope not_deleted

    end

我的 shopping_list.rb 是

class ShoppingList < ActiveRecord::Base
    attr_accessible :id, :shopping_list_name, :shopping_list_status, :total_items, :created_by, :last_updated_by

    # ------- ASSOCIATIONS --------

    has_many :products


    # ------ VALIDATIONS ------

    validates_presence_of    :id, :shopping_list_name

    validates_uniqueness_of  :id

    # -------- SCOPES ----------

    # scope :not_deleted, where("shoppinglistsqa.deleted = 0")

    # default_scope not_deleted
end

我要实现的查询是

select shopping_lists.shopping_list_name,shopping_lists.id,products.product_name,products.product_category
from products,shopping_lists
where shopping_lists.id=products.shopping_list_id;

你能帮帮我吗

最佳答案

只需执行以下操作:

@products = Product.includes(:shopping_lists)
# if you want to get all products + their shopping list

@shopping_list = ShoppingList.includes(:product).find(params[:id])
# if you want to return just 1 shopping_list + it's product

@product = Product.includes(:shopping_lists).find(params[:id])
# if you want to return a specific product + all of it's shopping lists

有关数据库查询的更多信息 have a look here .

关于ruby-on-rails - 在 ruby​​ on rails 3.2 中实现连接时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14906733/

相关文章:

ruby-on-rails - Rails 3 如何在 after_create 中获取当前记录 ID

ruby-on-rails - 更新多个记录上的单个属性的最佳实践

sql - 我如何在 PSQL 中查询一个表,以便它返回相同的成对列表?

postgresql - 如何使用 pgloader 从 CSV 文件导入空字符串作为空值?

postgresql - 从 psql : Peer authentication failed 创建数据库

ruby-on-rails - Ruby one liner 替换大块代码

css - 没有这样的文件或目录 - datetimepicker.css

ruby-on-rails - 要导入的文件未找到或不可读 : foundation/functions RAILS 4. 1.10

javascript - Angular + rails : Delete posts

mysql - Rails SQL 创建表语法