如何获得模型的所有关系.IE,我有User
型号:
class User < AR::Base
has_many :messages, :foreign_key => 'author'
has_many :posts
belongs_to :role
end
Run Code Online (Sandbox Code Playgroud)
那么我怎么知道User
模型有哪些关系呢?和foreign_keys如果被呈现.
我们有一个模型关联,看起来像这样:
class Example < ActiveRecord::Base
has_many :others, :order => 'others.rank'
end
Run Code Online (Sandbox Code Playgroud)
rank列是整数类型.虽然我们发现其他模型之间的其他has_many关联存在同样的问题,但这些特定模型的细节并不重要.
我们还添加了Enumerable模块:
module Enumerable
def method_missing(name)
super unless name.to_s[0..7] == 'collect_'
method = name.to_s[8..-1]
collect{|element| element.send(method)}
end
end
Run Code Online (Sandbox Code Playgroud)
这会添加一个collect_id方法,我们可以使用它从ActiveRecord对象数组中获取记录ID数组.
因此,如果我们使用普通的ActiveRecord find:all,我们得到一个很好的数组,然后我们可以使用collect_id,但如果我们使用Example.others.collect_id,我们得到
NoMethodError: undefined method `collect_id' for #<Class:0x2aaaac0060a0>
Run Code Online (Sandbox Code Playgroud)
Example.others.class返回"数组",所以它是说谎还是混淆?
到目前为止,我们的解决方案一直是这样使用它:
Example.others.to_a.collect_id
Run Code Online (Sandbox Code Playgroud)
这有效,但这似乎有点奇怪.你为什么要那样做?
我们使用的是Ruby 1.8.7和Rails 2.3.4
没有一个教程我似乎做了我想要做的事情.很简单,我希望用户能够向控制器提交POST请求("喜欢"视频)并让控制器使用JSON对象进行响应.任何帮助,将不胜感激.
谢谢
编辑因为SO正在弄乱格式化,这里也是我的代码的要点:https: //gist.github.com/813503
class LikesController < ApplicationController
before_filter :get_ids
respond_to :json, :js
def videolink
results = {}
# check to see if the user has liked this videolink before
if current_user
liked = Like.video?(current_user, @vid_id)
results["status"] = "OK"
results["liked"] = liked
else
results["status"] = "Error"
results["message"] = "User not logged in"
end
respond_with( results.to_json )
end
def update
results = {}
if current_user
results["status"] = "OK"
else
results["status"] = "Error"
results["message"] = "User not logged …
Run Code Online (Sandbox Code Playgroud) 我需要动态显示标题,如下面的样式/顺序控制器>动作.
例如:
class Office::MeetingController < ApplicationController def today ... end def yesterday ... end end
我想动态显示标题(即动态地将标题放在页面上),比如
今天页面标题=>办公室>会议>今天
昨天页面标题=>办公室>会议>昨天
我觉得懒得使用标题标签.;)
提前致谢
我有一个has_one配置文件的用户模型,该配置文件属于该用户.该配置文件有一个type
用于单表继承的列,可以是"artist"或"listener".我希望用户在新用户视图中注册时设置此项.因此我有以下形式的代码:
<%= f.fields_for :profile do |t| %>
<div class ="field">
<%= t.label :type, "Are you an artist or listener?" %><br />
<%= t.radio_button :type "artist" %>
<%= t.radio_button :type "listener" %>
</div>
<% end %>
Run Code Online (Sandbox Code Playgroud)
这在我的用户模型中:
accepts_nested_attributes_for :profile
Run Code Online (Sandbox Code Playgroud)
但我得到他的错误:
ArgumentError in Videos#index
Showing /rubyprograms/dreamstill/app/views/videos/_video.html.erb where line #3 raised:
No association found for name `profile'. Has it been defined yet?
Run Code Online (Sandbox Code Playgroud)
为什么会这样,我该如何解决?
另外我很困惑为什么错误会在我的视频部分中引出第3行,这根本就没有提到profile
......
更新:
这是整个表格:
<%= form_for(@user) do |f| %>
<% if @user.errors.any? %>
<div id="errorExplanation">
<h2><%= pluralize(@user.errors.count, …
Run Code Online (Sandbox Code Playgroud) 如果我需要给2个人发一封信,我该怎么办呢?我在网上找到了文档,但是我不理解它们,你能告诉我并用简单的语言解释我吗?
我认为这是一个非常受欢迎的问题.
我正在寻找黑色不透明层的crossbrowser CSS解决方案.这将隐藏其下的所有内容.
我的例子:http://jsfiddle.net/pb9jv/.但它不是crossbrowser.(IE 6+是我屁股的痛苦).
我正在做一个大项目.现在我们需要添加新功能:scheduler管理.这不是应用程序的主要任务,但它是相当复杂的一部分.
将其作为单独的应用程序提取是否是个好主意?
它将共享一些数据(用户和一些其他个性),它将使用相同的数据库.
我想要做的主要原因是简化主要应用程序.
我明白,这可能是一个太宽泛的问题.但也许您可以分享您开发此类应用程序的经验,也许我可以阅读任何文章和全球最佳实践.
我一直在寻找一段时间,但谷歌并没有真正帮助我.ArgumentError Unknown key(s): client_id
出现在ProjectsController中:
# projects_controller.rb
class Management::ProjectsController < Management::ManagementController
def index
@projects = Project.find( :client_id => current_user.client )
end
end
Run Code Online (Sandbox Code Playgroud)
这是项目模型:
# project.rb
class Project < ActiveRecord::Base
belongs_to :client
end
Run Code Online (Sandbox Code Playgroud)
这是客户端模型:
# client.rb
class Client < ActiveRecord::Base
has_many :projects
end
Run Code Online (Sandbox Code Playgroud)
最后,迁移:
# 20110404155917_create_projects.rb
class CreateProjects < ActiveRecord::Migration
def self.up
create_table :projects do |t|
t.string :name
t.datetime :date
t.text :description
t.integer :client_id
t.timestamps
end
end
def self.down
drop_table :projects
end
end
Run Code Online (Sandbox Code Playgroud)
应该可以吧?
看不到我在这里失踪的东西..
有人有建议吗?
谢谢!
如何从sqsh控制台将查询结果保存到文件中?
谷歌正在谈论一些我不想使用的gui工具.
PS:Linux
我正在使用Rails 3和MySQL数据库,我需要以编程方式创建这样的查询:
select * from table where category_name like '%category_name_1%'
OR category_name like '%category_name_2%'
(...snip...)
OR category_name like '%category_name_n%'
Run Code Online (Sandbox Code Playgroud)
鉴于表格大小和项目范围(我认为最多500行),我觉得使用像思考sphinx这样的东西会有点过分.我知道我可以通过直接编写查询字符串来完成此操作,但想知道是否有ActiveRecord方法来执行此操作.在官方指南中没有提到这一点,我现在谷歌搜索了很长一段时间,只是空手而归:(
另外,有没有理由(可能是Rails的原因?)不包含OR子句?
谢谢!
我有 class A
class A
attr_reader :b
def b=param
@b = param
print "success"
end
end
>> a = A.new
>> a.b = "hello world!"
#> "success"
#> "hello world!"
>> a.b << " and goodbye!"
#> "helo world! and goodbye!"
Run Code Online (Sandbox Code Playgroud)
我的"成功"在哪里?:)
我想打印'成功'每次我的变量都改变了.
我不能写
def b<<param
@b << param
print "success"
end
Run Code Online (Sandbox Code Playgroud) ruby ×8
associations ×2
actionmailer ×1
activerecord ×1
css ×1
csv ×1
html ×1
jquery ×1
mysql ×1
sql ×1
sql-server ×1
sqsh ×1