小编ste*_*ard的帖子

Ruby on Rails.如何在a:属于关系中使用Active Record .build方法?

我一直无法在Rails中找到关于.build方法的任何文档(我目前正在使用2.0.2).

通过实验,似乎您可以使用构建方法has_many在保存记录之前将记录添加到关系中.

例如:

class Dog < ActiveRecord::Base
  has_many :tags
  belongs_to :person
end

class Person < ActiveRecord::Base
  has_many :dogs
end

# rails c
d = Dog.new
d.tags.build(:number => "123456")
d.save # => true
Run Code Online (Sandbox Code Playgroud)

这将正确地保存带有外键的狗和标签.这似乎不适用于某种belongs_to关系.

d = Dog.new
d.person.build # => nil object on nil.build
Run Code Online (Sandbox Code Playgroud)

我也试过了

d = Dog.new
d.person = Person.new
d.save # => true
Run Code Online (Sandbox Code Playgroud)

Dog在这种情况下未设置外键,因为在保存时,新人没有id,因为它尚未保存.

我的问题是:

  1. 如何构建工作,以便Rails足够聪明,弄清楚如何以正确的顺序保存记录?

  2. 我怎样才能在belongs_to关系中做同样的事情?

  3. 我在哪里可以找到有关此方法的任何文档?

谢谢

activerecord ruby-on-rails foreign-keys

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

时间差以小时计

我试图获得两个不同时间实例的小时差异.我从DB获取这些值作为:datetime列

如何在忽略或舍入分钟的同时将其包括在计算中的月份和年份?这只能手动完成还是有功能吗?

ruby time

65
推荐指数
5
解决办法
6万
查看次数

Ruby Hash白名单过滤器

我试图找出如何将键和值对从一个过滤器过滤到另一个过滤器

例如,我想采取这个哈希

x = { "one" => "one", "two" => "two", "three" => "three"}

y = x.some_function

y == { "one" => "one", "two" => "two"}
Run Code Online (Sandbox Code Playgroud)

谢谢你的帮助

编辑:应该提一下,在这个例子中,我希望它表现为白名单过滤器.也就是说,我知道我想要什么,而不是我不想要的.

ruby hashmap

64
推荐指数
6
解决办法
4万
查看次数

Git:致命:不明确的对象名称:'origin/release_2.6'

我在尝试创建远程跟踪分支时遇到此错误

git co -b release_2.6 origin/release_2.6
warning: refname 'origin/release_2.6' is ambiguous.
warning: refname 'origin/release_2.6' is ambiguous.
fatal: Ambiguous object name: 'origin/release_2.6'.
Run Code Online (Sandbox Code Playgroud)

我只用release_2.6定义了这两个引用

git show-ref | grep "release_2.6"
a71b2da1526f73862464a23aceaa1939a8b1ace2 refs/heads/origin/release_2.6
ed1399936a8cc4cd2feed1851123af861b0ff093 refs/remotes/origin/release_2.6
Run Code Online (Sandbox Code Playgroud)

有谁知道这个错误意味着什么?

干杯

git reference

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

使用Puppet处理敏感信息

使用puppet存储和处理敏感信息并将其安全地分发到节点的最佳方法是什么?

我使用的版本是2.7.

一个例子是数据库密码.应用程序服务器上需要纯文本密码.

如何存储这些而不会让他们躺在木偶脚本里面?

security puppet

18
推荐指数
1
解决办法
4896
查看次数

Postgresql,限制特定列的更新(只读)

如果更新包含对特定列的更改,是否可以使postresql限制/阻止对特定记录的更新?

这将如何实施.触发/约束?实现这一目标的最有效方法是什么?

我使用的是9.1版

postgresql

16
推荐指数
2
解决办法
5676
查看次数

Rails:Active Record销毁时未初始化的常量错误

我在尝试销毁活动记录实例时遇到问题.

它涉及以下AR

class Client < ActiveRecord::Base
    has_many :phone_numbers, :dependent => :destroy
    has_many :email_addresses, :dependent => :destroy
    has_many :user_clients , :dependent => :destroy
    has_many :users, :through => :user_clients 
end

class UserClient  < ActiveRecord::Base
belongs_to :user
belongs_to :client , :dependent => :destroy
has_many :instructions, :dependent => :destroy
end
Run Code Online (Sandbox Code Playgroud)

在客户端实例上执行销毁时,我收到以下错误

@dead_man = Client.find(params[:id])
@dead_man.destroy => uninitialized constant UserClient::Instruction
Run Code Online (Sandbox Code Playgroud)

我真的不确定这个错误来自哪里.任何帮助是极大的赞赏!

activerecord ruby-on-rails constants

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

Ruby on Rails,Javascript检测

我正在创建一个Web应用程序,它使用Rails内置帮助程序函数向站点添加ajax功能.我不希望用户能够在没有JS的情况下使用该应用程序,因为它无法正常运行.

我需要能够阻止这种情况.如何在没有JS的情况下阻止用户加载我的任何页面?

我试图在我的布局中使用标签.这会检测到JS的缺失但仍会呈现视图.将脚本标记放在yield附近会阻止呈现任何视图.

关于如何做到这一点的任何想法?

javascript ruby-on-rails

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

Ruby - 在类中获取非祖先方法的数组

我想创建一个具有一个方法的类,该方法调用不在超类中的所有其他方法.

有没有办法我可以使用obj.methods来获取非祖先方法?或者还有另一种方法可以完全实现.

谢谢

ruby methods inheritance

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

Rails活动记录实例变量

我的问题是关于这个AR及其实例变量@saved

 class PhoneNumber < ActiveRecord::Base
has_one :user
validates_presence_of :number

def self.create_phone_number( user, phone_hash )
    @new_phone = PhoneNumber.new(phone_hash)
    @user = user
    PhoneNumber.transaction do
        @user.phone_numbers << @new_phone
        @new_phone.save!
        @user.save!
    end
    @saved = true
    return  @new_phone
rescue ActiveRecord::RecordInvalid => invalid
    @saved = false
    return  @new_phone
end

def saved?
    @saved ||= false
end
 end
Run Code Online (Sandbox Code Playgroud)

我的理解是,实例变量将通过实例的存在来保持它们的值.

在我的控制器中使用此AR时,保存了吗?总是返回false ..

@phone_number = PhoneNumber.create_phone_number(@active_user, params[:phone_number])
puts "add_phone_number"
if @phone_number.saved? => always false
Run Code Online (Sandbox Code Playgroud)

关于这些实例变量我缺少什么?谢谢

activerecord ruby-on-rails instance-variables

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