小编dav*_*son的帖子

如何将记录添加到has_many:通过rails中的关联

class Agents << ActiveRecord::Base
  belongs_to :customer
  belongs_to :house
end

class Customer << ActiveRecord::Base
  has_many :agents
  has_many :houses, through: :agents
end

class House << ActiveRecord::Base
  has_many :agents
  has_many :customers, through: :agents
end
Run Code Online (Sandbox Code Playgroud)

如何添加Agents模型Customer?

这是最好的方法吗?

Customer.find(1).agents.create(customer_id: 1, house_id: 1)
Run Code Online (Sandbox Code Playgroud)

以上工作正常从控制台,但我不知道如何在实际应用程序中实现这一点.

想象一下,为客户填写的表格也house_id作为输入.然后在我的控制器中执行以下操作?

def create 
  @customer = Customer.new(params[:customer])
  @customer.agents.create(customer_id: @customer.id, house_id: params[:house_id])
  @customer.save
end
Run Code Online (Sandbox Code Playgroud)

总的来说,我对如何在has_many :through表中添加记录感到困惑?

activerecord ruby-on-rails has-many-through

91
推荐指数
3
解决办法
9万
查看次数

如何向数组添加多个元素?

我可以轻松地将一个元素添加到现有数组中:

arr = [1]
arr << 2
# => [1, 2]
Run Code Online (Sandbox Code Playgroud)

如何将多个元素添加到我的数组?

我想做类似的事情arr << [2, 3],但这会为我的数组添加一个数组#=> [1, [2, 3]]

ruby arrays

48
推荐指数
4
解决办法
3万
查看次数

验证对象是否具有一个或多个关联对象

我需要确保在创建产品时它至少有一个类别.我可以使用自定义验证类来完成此操作,但我希望有一种更标准的方法.

class Product < ActiveRecord::Base
  has_many :product_categories
  has_many :categories, :through => :product_categories #must have at least 1
end

class Category < ActiveRecord::Base
  has_many :product_categories
  has_many :products, :through => :product_categories
end

class ProductCategory < ActiveRecord::Base
  belongs_to :product
  belongs_to :category
end
Run Code Online (Sandbox Code Playgroud)

validation ruby-on-rails has-many-through

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

rails范围以检查关联是否不存在

我期待编写一个范围,返回所有没有特定关联的记录.

foo.rb

class Foo < ActiveRecord::Base    
  has_many :bars
end
Run Code Online (Sandbox Code Playgroud)

bar.rb

class Bar < ActiveRecord::Base    
  belongs_to :foo
end
Run Code Online (Sandbox Code Playgroud)

我希望有一个范围,可以找到所有的Foo's那不要有任何bars.很容易找到使用关联的那些joins,但我还没有找到相反的方法.

sql ruby-on-rails associations scopes

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

使用Devise添加额外的注册字段

我正在尝试为注册#new添加一些额外的字段.由于我只需要额外的数据并且不需要不同的功能,我不明白为什么我需要覆盖控制器等.所以我做的是修改注册#new如下:

在此输入图像描述

要通过清理程序启用这些额外字段,我更新了ApplicationController,如下所示:

在此输入图像描述

由于某种原因,它不起作用,额外的字段作为空值进入数据库.

我正在使用Ruby 2和Rails 4 rc1,以及Devise 3.0.0.rc.

ruby-on-rails devise

18
推荐指数
6
解决办法
3万
查看次数

嵌套资源与Devise - Rails3

我正在尝试设置配置文件控制器以与设计注册成员一起工作.

我已经创建了Profile模型和控制器,并one-to-one relationship通过添加belongs_to :member到我的profile.rb模型和has_one :profile我的member.rb模型中添加了一个.

要创建我使用的嵌套资源:

devise_for :members, :path => "accounts",:path_names => { :sign_in => "login", :sign_out => "logout", :sign_up => "register" }

resources :members do
  resources :profiles
end
Run Code Online (Sandbox Code Playgroud)

呼叫rake routes输出

     member_profiles GET    /members/:member_id/profiles(.:format)          {:action=>"index", :controller=>"profiles"}
                     POST   /members/:member_id/profiles(.:format)          {:action=>"create", :controller=>"profiles"}
  new_member_profile GET    /members/:member_id/profiles/new(.:format)      {:action=>"new", :controller=>"profiles"}
 edit_member_profile GET    /members/:member_id/profiles/:id/edit(.:format) {:action=>"edit", :controller=>"profiles"}
      member_profile GET    /members/:member_id/profiles/:id(.:format)      {:action=>"show", :controller=>"profiles"}
                     PUT    /members/:member_id/profiles/:id(.:format)      {:action=>"update", :controller=>"profiles"}
                     DELETE /members/:member_id/profiles/:id(.:format)      {:action=>"destroy", :controller=>"profiles"}
Run Code Online (Sandbox Code Playgroud)

要localhost:3000/members/1/profiles在浏览器中正确的路线我的 …

ruby-on-rails devise

10
推荐指数
1
解决办法
3714
查看次数

添加TOS协议复选框与Devise

我们正在为我们的会员使用设计.我们在成员模式中添加了一个tos_agreement字段(boolean),并将其添加到views/devise/registrations/new.html.haml.

在Member模型中,我们有一个验证规则如下:

validates_acceptance_of :tos_agreement, :allow_nil => false,
  :accept => true
Run Code Online (Sandbox Code Playgroud)

它工作正常 - 如果你不接受服务条款,你不能注册.

但是,编辑设置时会出现问题.如果你去,/members/edit你会得到一个表格,你可以在那里更改你的电子邮件地址或密码.TOS协议没有任何字段,因为此时不应更改.但是,当您进行更改(例如更改密码)并提交表单时,它会返回错误消息,表明TOS协议不能为false.

我们如何告诉它在首次注册后永远不会尝试修改TOS协议?

编辑:所以我认为根本问题是我们在attr_accessible中有:tos_agreement,这是一个非常糟糕的想法,现在我想起来了.但是如果我们删除它,我们如何修改Devise以接受参数并对其执行某些操作,即使它不是可批量分配的?

validation ruby-on-rails devise ruby-on-rails-3 ruby-on-rails-3.2

10
推荐指数
1
解决办法
4095
查看次数

getScript jQuery路径不起作用/ Ruby on Rails

我有一个jQuery函数,在列表项双击后调用.

应用程序/资产/ Java脚本/瓦/ tile.js

$('#list > li').dblclick(function(){
  // styling
  $(this).toggleClass('liked');

  // pass ID to controller
  var movie_id = $(this).attr("data-id");
  $.getScript("/likes.js");
});
Run Code Online (Sandbox Code Playgroud)

在将一些新格式应用于所述项目之后,我的主要目标是从我的like控制器创建数据库条目.在这个Railscast中,index来自comments控制器的动作通过这个简单的行被调用.

$.getScript("/comments.js");
Run Code Online (Sandbox Code Playgroud)

另外,一些JavaScript从index.js.erb文件中调用.

理解Railscasts示例代码的第一个问题是它们如何定义动作.如果我想createLike从我的电话中调出这个动作likes_controller怎么称呼它?

其次,到目前为止我的尝试都失败了,因为JavaScript文件都没有加载,并且动作也没有被调用.

不知何故,我感觉到我已经搞砸了路径.我应该在哪里找到应该使用该getScript函数调用的JavaScript文件?

档

应用程序/资产/ JavaScript的/喜欢/ index.js.erb的

console.log("Test");
Run Code Online (Sandbox Code Playgroud)

应用程序/控制器/ likes_controller.rb

class LikesController < ApplicationController
  protect_from_forgery

  def index
    Like.create(:user_id => current_user.id, :item_id => params[:id])
  end
end
Run Code Online (Sandbox Code Playgroud)

ruby jquery ruby-on-rails getscript ruby-on-rails-3

7
推荐指数
1
解决办法
3153
查看次数

条件转换选项回形针

经过一些研究,我能够根据我的image_class专栏添加样式.

Model.rb

has_attached_file :image,
                  :styles => lambda { |attachment| attachment.instance.decide_styles }

def decide_styles
  styles = {}

  case self.image_class
    when "poster"
      styles[:thumb] = ["30x45!", :jpg]
      styles[:standard] = ["185x278!", :jpg]
      styles[:expanded] = ["372x559!", :jpg]
      styles[:big] = ["600x900!", :jpg]
    when "cover"
      styles[:thumb] = ["30x45!", :jpg]
      styles[:standard] = ["300x1200!", :jpg]
  end

  styles
end
Run Code Online (Sandbox Code Playgroud)

这很顺利,现在我也想添加条件convert_options.这种方式失败了.

has_attached_file :image,
                  :styles => lambda { |attachment| attachment.instance.decide_styles }, 
                  :convert_options => lambda { |attachment| attachment.instance.decide_convert_options }

def decide_styles
  ...
end

def decide_convert_options

  opshunz = …
Run Code Online (Sandbox Code Playgroud)

ruby-on-rails paperclip

7
推荐指数
1
解决办法
5787
查看次数

select2-rails gem无法在Rails4上运行

我已经尝试过select2-rails gem的文档,但是我的浏览器控制台仍然会抛出错误.

未捕获的TypeError:$(...).select2不是函数

我正在使用rails 4.0.1&select2-rails 3.5.9.3

我的application.js

//= require jquery
//= require select2
//= require jquery.ui.accordion
//= require jquery.ui.menu
//= require jquery.ui.datepicker
//= require common
//= require posts
//= require twitter/bootstrap
//= require owl.carousel
//= require turbolinks
//= require vendor_js
//= require_tree .

$(document).ready(function() {
  $("select#team_select").select2();
});
Run Code Online (Sandbox Code Playgroud)

application.css

*= require select2
*= require_self
*= require jquery.ui.accordion
*= require jquery.ui.menu
*= require jquery.ui.datepicker
*= require common
*= require owl.carousel
*= require lazybox
*= require fancybox …
Run Code Online (Sandbox Code Playgroud)

javascript ruby-on-rails select2-rails

7
推荐指数
1
解决办法
5097
查看次数