我对如何生成属于另一个模型的模型感到困惑.我的书使用此语法将Micropost与User关联:
rails generate model Micropost user_id:integer
Run Code Online (Sandbox Code Playgroud)
但是http://guides.rubyonrails.org/说这样做:
rails generate model Micropost user:references
Run Code Online (Sandbox Code Playgroud)
这些2产生的迁移是不同的.另外,对于前者,rails如何知道这user_id是一个外键引用user?谢谢!
我有一个我想创建的对象,可以在我的一个模型中访问.我把他放在哪里?我担心如果我把他放在模型类文件中,每次我创建该模型的新实例时都会创建它.我只想在启动时创建一次这个对象.这是对象:
require 'pubnub'
publish_key = 'fdasfs'
subscribe_key = 'sdfsdsf'
secret_key = 'fsdfsd'
ssl_on = false
pubnub_obj = Pubnub.new(publish_key,
subscribe_key,
secret_key,
ssl_on)
Run Code Online (Sandbox Code Playgroud)
我在模型中使用他这样:
class Message < ActiveRecord::Base
def self.send_new_message_client(message)
message = { 'some_data' => message }
info = pubnub_obj.publish({
'channel' => 'testing',
'message' => message
})
puts(info)
end
end
Run Code Online (Sandbox Code Playgroud) 我有一个奇怪的场景:我想在P的创建者和当前用户成为朋友之前订购所有帖子P.
结果将是在顶部的较新朋友帖子和底部的较老朋友帖子的帖子列表.我们可以假设所有用户都是所有其他用户的朋友,但每个友谊都有不同的创建时间.
我有Post,User和Friendship模型.帖子属于用户,用户有很多友谊.
class User < ActiveRecord::Base
has_many :friendships
has_many :friends, :through => :friendships
has_many :inverse_friendships, :class_name => "Friendship", :foreign_key => "friend_id"
has_many :inverse_friends, :through => :inverse_friendships, :source => :user
end
class Friendship < ActiveRecord::Base
belongs_to :user
belongs_to :friend, :class_name => "User"
end
class Post < ActiveRecord::Base
belongs_to :user
end
Run Code Online (Sandbox Code Playgroud)
最好的方法是什么?谢谢!
我想在python解释器中玩,但有一堆导入和对象设置完成.现在我正在命令行启动解释器并每次都进行设置工作.有没有办法在完成所有初始化工作的情况下启动命令行解释器?
例如:
# Done automatically.
import foo
import baz
l = [1,2,3,4]
# Launch the interpreter.
launch_interpreter()
>> print l
>> [1,2,3,4]
Run Code Online (Sandbox Code Playgroud) 我不想要使用设备登录电子邮件.我从config/initializers/devise.rb中删除了电子邮件:
config.authentication_keys = [ :login ]
Run Code Online (Sandbox Code Playgroud)
并将此添加到我的用户模型:
def email_required?
false
end
Run Code Online (Sandbox Code Playgroud)
但是,当我尝试保存用户时,我收到此错误:
SQLite3::SQLException: users.email may not be NULL
Run Code Online (Sandbox Code Playgroud)
我想改变迁移中的某些内容吗?
我有一个父类,有一堆类方法:
class Parent():
@classmethod
def methodA(cls):
pass
@classmethod
def methodB(cls):
pass
Run Code Online (Sandbox Code Playgroud)
在我的子类中,我想将一个方法的子集包装在"with"中.它应该达到这个效果:
class Child(Parent):
@classmethod
def methodA(cls):
with db.transaction:
super(Child, cls).methodA()
Run Code Online (Sandbox Code Playgroud)
我有一堆遵循这种模式的方法,我宁愿不重复自己.有更清洁的方法吗?
有谁知道如何在Emacs中获取ruby-mode来缩进私有下的所有定义?这是一个例子:
def redirect_back_or(default)
redirect_to(session[:return_to] || default)
clear_return_to
end
private
def user_from_remember_token
User.authenticate_with_salt(*remember_token)
end
Run Code Online (Sandbox Code Playgroud) 我是Ruby on Rails的新手,很抱歉,如果答案很明显,我无法通过搜索找到任何东西.现在我的视图渲染_box.js.erb只是绘制一个框.在正常情况下正常工作的_box.js.erb内部,我引入了一个简单的语法错误,如不匹配的括号.当我加载网页时,我的框不显示.我查看logs/development.logs,它没有提到我的javascript语法错误.这个错误是否被某处抓住了?如果是这样,我该如何显示它?
我正在尝试使用他们的四维转储构建本地版本的freebase搜索API.我想知道他们用什么算法来匹配名字?例如,如果你去freebase.com并输入"徒步旅行",你会得到
我有一张叫做字符的表。每个字符都有一个称为“状态”的枚举,可以是“悲伤”或“快乐”。如何为列添加新状态“ confused”?我尝试了这种迁移,但失败了:
migration.describeTable('characters').success(function (attributes) {
migration.changeColumn('characters', 'state',
{
type: DataTypes.ENUM,
values: ['sad', 'happy', 'confused']
})
.complete(done);
});
Run Code Online (Sandbox Code Playgroud)
它抱怨错误:类型“ enum_characters_state”已经存在。