标签: rails-models

嵌套has_many:通过rails 3

我知道Rails不支持嵌套的has_many:通过关系,虽然早在Rails 2之前就有关于补丁的谈话和开放票.

我确实遇到了一个非常光滑的插件,但是主分支机构不能与Rails 3一起工作,我对于在应用程序中使用它来完成任务关键任务犹豫不决,因此最近缺乏活跃的开发.那么 - 处理这些关系的最佳方式是什么?

class Author < ActiveRecord::Base
  has_many :contracts
  has_many :products, :through => :contracts

class Product < ActiveRecord::Base
  has_many :contracts
  has_many :orders
  has_many :authors, :through => :contracts

class Contracts < ActiveRecord::Base
  belongs_to :author
  belongs_to :product
Run Code Online (Sandbox Code Playgroud)

所以,通过将其添加到Author模型,能够获得订单将会很棒.

has_many :orders, :through => :products
Run Code Online (Sandbox Code Playgroud)

但是,唉,你不能 - 至少没有插件.所以,我的问题是,当唯一关联是在连接模型,合同之间时,访问所有作者订单的最佳方法是什么?

ruby-on-rails models rails-models ruby-on-rails-3

4
推荐指数
1
解决办法
3237
查看次数

如何从表记录的子集创建Rails模型

我正在尝试创建几个模型,所有模型都来自同一个表.如何限制每个模型中的表记录?在你告诉我改变我的数据结构之前,这是一个报告应用程序,它从一个我无法控制的预先存在的后备数据库中提取.

我的表看起来像:

Vehicle_Table
id vehicle_type name
--------------------
1  Car          Foo
2  Car          Bar
3  Motorcycle   Baz
4  Car          Barf
Run Code Online (Sandbox Code Playgroud)

我想为汽车和摩托车建造模型,如:

class Car < ActiveRecord::Base
  set_table_name 'Vehicle_Table'

end
Run Code Online (Sandbox Code Playgroud)

class Motorcycle < ActiveRecord::Base
  set_table_name 'Vehicle_Table'

end
Run Code Online (Sandbox Code Playgroud)

但是我不知道怎么说,"嘿活跃唱片,我只想要记录里面的车辆类型=摩托车模型中的摩托车."

我确信这很明显,但我的所有Google搜索都会返回模型中FIND子集的方式,而不是将模型限制为特定的记录子集.

rails-models ruby-on-rails-3 ruby-on-rails-3.1

4
推荐指数
1
解决办法
808
查看次数

Rails 中只有一个模型实例

我正在开发我的第一个 Rails 应用程序。它需要存储有关将出现在每个页面上的单个广告的一些信息。管理员只需要能够设置 URL、标题和图像。显然,我只需要这个广告对象的一个​​实例。

我创建了一个从 ActiveRecod::Base 继承的模型,但这似乎是错误的做法,因为它被配置为在数据库表中保存多个广告。

我这样做的最佳方法是什么?模型和控制器应该是什么样的?

提前致谢,阿维

ruby-on-rails rails-models

3
推荐指数
1
解决办法
3221
查看次数

Rails 3在每条记录中专门使用belongs_to不同的表

我有一些这样的模型:

class Alpha < ActiveRecord::Base
 has_many :items 
end    

class Beta < ActiveRecord::Base
 has_many :items
end

class Item < ActiveRecord::Base
 belongs_to :alpha
 belongs_to :beta
end
Run Code Online (Sandbox Code Playgroud)

但我希望每个数据库记录中的Item模型属于:alpha或a:beta但不是两者.在Rails 3中做任何好方法吗?或者我应该使用AlphaItems和BetaItems对其进行建模?

ruby-on-rails rails-models ruby-on-rails-3

3
推荐指数
1
解决办法
1567
查看次数

在db fetch之后对activerecord进行子类化并维护子类

我有一个ActiveRecord模型Media这应该能够存储有关不同类型的媒体(类似结构化信息Media::Book,Media::Movie,Media::Music).但是,每个子类都有独特的方法.

# TABLE medias
# string :title
# string :description
# integer :media_type

class Media < ActiveRecord::Base
end

class Media
  class Book < Media
    def reviews
      GoogleBooks.search(name).get_reviews
    end
  end
  class Movie < Media
    def reviews
      IMDB.search_movies(name).reviews
    end
  end
  class Music < Media
    def reviews
      Lastfm.search(name).comments
    end

    def music_video
      Youtube.search(name).first.embed_html
    end
  end
end
Run Code Online (Sandbox Code Playgroud)

如果我使用Media::Book.new("Harry Potter").reviews,这将有效,但我希望能够使用

Media.find("Harry Potter")
=> Media::Book
Run Code Online (Sandbox Code Playgroud)

Media.find("Harry Potter").reviews
Run Code Online (Sandbox Code Playgroud)

我知道我应该使用media_type来实现这一点,但我不知道,如果那里有一个更好的方式来做到这一点不是覆盖每一个ActiveRecord的数据库接口方法(User.medias,find,find_by_etc, …

ruby activerecord ruby-on-rails sti rails-models

3
推荐指数
1
解决办法
4820
查看次数

Ruby on Rails:如何建模"用户最喜欢的模型"

我将使用StackOverflow作为我的例子.假设我有一个Question模型.登录用户可以" Question标记"a 标记为他们的最爱之一.在数据库中,这种东西可能存储在UserQuestions带有user_id字段和question_id字段的表中.这种功能不是典型的CRUD,因为实际上只有"list","add"和"delete"."用户加星标的问题"列表中显示的记录也不应是UserQuestion记录,而应是Question记录.我在控制器和UserQuestion模型中放了什么代码?

class MyFavoriteQuestionsController < ApplicationController

  def index
    #list just the questions associated with current_user
  end

  def add
    #insert a row in the database for current_user and selected question
  def

  def remove
    #remove the row from the database
  end
end
Run Code Online (Sandbox Code Playgroud)

ruby-on-rails rails-models

3
推荐指数
1
解决办法
1755
查看次数

从Django到Rails,你如何继续使用rails模型?

最近我从django开发转换为全时轨道工作,这是一个相当小的商店,我正在从书本中随手拿起东西.

上周,当我了解到rails的模型没有镜像数据库中的内容时,我的心理模型受到重创.

请参阅差异示例:http://www.peterkrantz.com/2009/rails-grails-django-models/

我很好奇的是,我如何不断修改模型以支持新的数据类型和关系?

另外,有没有办法在模型文件中显示特定类的表中的所有属性?

谢谢

ruby-on-rails django-models rails-models rails-migrations

3
推荐指数
1
解决办法
238
查看次数

如何针对枚举验证Rails模型?

类似于nodejs的mongoose如何具有枚举验证器,其中字段的值必须是预定义数组中的值之一,Rails中的mongoid模型将如何复制此行为?

即.

field :category, type: String --> must be in one of [categoryA, categoryB, categoryC]
Run Code Online (Sandbox Code Playgroud)

ruby-on-rails rails-models mongoid ruby-on-rails-3

3
推荐指数
1
解决办法
1827
查看次数

在Rails中,使用check_box_tag,如何在提交查询后选中复选框?

好吧,我知道这是对萨斯当然,人们一直在问有关那还有问题,但我花了很多时间试图与阅读和我被困.首先,当你有一个叫做电影模式,是它更好地使用评级为模型,并将其关联或只是保持在一个阵列的浮动空间等级(!).其次,这是我现在在控制器中的内容:

def index

@movies = Movie.where(params[:ratings].present? ? {:rating => (params[:ratings].keys)} :   {}).order(params[:sort])
@sort = params[:sort]
@ratings = Ratings.all

end
Run Code Online (Sandbox Code Playgroud)

现在,我决定创建一个评级模型,因为我认为它会更好.这是我的观点:

= form_tag movies_path, :method => :get do

Include:
- @ratings.each do |rating|
 = rating.rating
 = check_box_tag "ratings[#{rating.rating}]"
= submit_tag "Refresh"
Run Code Online (Sandbox Code Playgroud)

我尝试了一些与在复选框标签内使用条件三元组相关的所有内容,以".include?(评级)结尾?"真:""我尝试了所有应该工作的但却没有.我不想要确切的答案,我只需要指导.谢谢!

更新(控制器的方法):

这是我的控制器中读取此哈希的索引方法 - 为清楚起见.我为之前的模糊道歉.

def index    
  @all_stores = Product.all_stores
  @selected_stores = params[:stores] || session[:stores] || {}

  if @selected_stores == {}
    @selected_stores = Hash[@all_stores.map {|store| [store, store]}]
  end
  if params[:stores] != session[:stores]
    # session[:stores] = @selected_stores
    session[:stores] = params[:stores]
    redirect_to …
Run Code Online (Sandbox Code Playgroud)

ruby activerecord ruby-on-rails rails-models

2
推荐指数
1
解决办法
8507
查看次数

Ruby on rails - 访问另一个模型中的模型数据

我想访问从OtherModel.rb到MyModel.rb的列.那可能吗?

如果我想要访问的数据位于模型中,那就是它的样子.这很好用

//MyModel.rb

def to_param
  self.name
end
Run Code Online (Sandbox Code Playgroud)

但我不知道如何从其他模型访问数据.这是我想要的一个例子:

//MyModel.rb

def to_param
  OtherModel.name
end
Run Code Online (Sandbox Code Playgroud)

ruby-on-rails rails-models

2
推荐指数
1
解决办法
1万
查看次数