我认为答案是管理员登录,然后检查用户是否有管理员标志,但我也想到了一些其他相关问题.
在与非管理员相同的用户表中设置管理标志(attr_protected)是否更好?或者我应该有一个管理员用户表?
我应该为管理员用户创建单独的rails应用程序吗?这可能是过度的,因为他们都必须访问相同的数据库(更不用说设置可能是一个巨大的痛苦).
还有其他建议吗?现在我只需要保护一两页,所以我甚至将HTTP基本或摘要认证作为一种临时措施(受保护的内容实际上不是私有/重要的).但是......我不知道如何为特定的操作实现HTTP auth,我只看到了如何实现它以防止目录访问.
任何方向和讨论都会很棒.我相信其他Stack Overflow用户将从这次讨论中受益.
谢谢!
我正在使用rails帮助程序创建3个选择列表,以便让用户选择日期.如果我为帮助者分配一个名称,它会将所有3个选择列表设置为具有该名称,然后只有最后一个列表通过(它会覆盖前一个).我需要知道的是:采用一组3个选择列表(日,月,年)的最佳方法是什么,并将它们组合起来创建日期对象并将其保存到我的数据库中?
这是我的日期字段:
<%= select_date Date.today, { :order => [:month, :day, :year], :start_year => Date.today.year, :end_year => Date.today.year + 3 } %>
Run Code Online (Sandbox Code Playgroud)
这是传递给我的控制器的参数(从我的开发日志中吐出)
Parameters: {"date"=>{"month"=>"4", "day"=>"9", "year"=>"2009"},
"action"=>"create", "controller"=>"shows",
"show"=>{"headline"=>"for example, \"Parking lot is next to the bookstore on Main Street\"", "venue_id"=>{"venue_id"=>""}, "cents"=>"00", "dollars"=>"00"},
"user_id"=>"3", "load_in"=>"-2", "show_time"=>"-2", "query"=>"Type venue name & location here...", "doors"=>"-2"}
Run Code Online (Sandbox Code Playgroud)
如您所见,日期已过.理想情况下,我希望将日期作为可接受的日期对象传递给我的控制器.此外,我希望它传递"show"哈希,因为它是显示数据.通过一些简单的轨道修改可以实现吗?或者我必须写一些JS(在我看来,这个解决方案有点脏)?
出于某种原因,当我写入"text"类型的列时,我的查询搞砸了.这是一个例子:
Describe messages;
Field Type Null Key Default Extra
id int(11) NO PRI NULL auto_increment
title varchar(255) YES NULL
body text YES NULL
to text YES NULL
content_type varchar(255) YES NULL
is_sms tinyint(1) YES NULL
user_id int(11) YES NULL
created_at datetime YES NULL
updated_at datetime YES NULL
Run Code Online (Sandbox Code Playgroud)
然后我尝试插入:
INSERT INTO messages (id,title,body,to) VALUES ('1','Test Message','This is a test message. This is a test message. This is a test message. This is a test message.', 'an email' );
Run Code Online (Sandbox Code Playgroud)
由于某种原因,这会导致一般的MySQL语法错误.如果我删除"to"列并且它是查询中的相应值,则查询工作正常.
有任何想法吗?
我不指望有人能解决我的问题,但我不太确定如何解决这个问题.如果我做"git status",我得到:
# On branch master
# Changes to be committed:
# (use "git reset HEAD <file>..." to unstage)
#
# deleted: app/controllers/application.rb
#
# Changed but not updated:
# (use "git add <file>..." to update what will be committed)
#
# modified: app/views/main/index.html.erb
# modified: public/stylesheets/bandop.css
#
# Untracked files:
# (use "git add <file>..." to include in what will be committed)
#
# vendor/plugins/contacts/.gitignore
# vendor/plugins/contacts/.gitmodules
Run Code Online (Sandbox Code Playgroud)
但如果我做"git add".然后"git status",我得到:
# On branch master
# Changes to be committed: …Run Code Online (Sandbox Code Playgroud) 我有一个非常标准的Rails表单:
<div>
<h1>Create a New Listing</h1>
<%- form_for @listing, :html => {:multipart => true} do |f| -%>
<div><%= f.label :title, "Title:"%> <%= f.text_field :title %></div>
<div>
<%= f.label :image, "Image:" %> <%= f.file_field :image
</div>
<div>
<%= f.label :sound, "Sound Clip:"%> <%= f.file_field :sound %><br />
</div>
<div class="submit"><%= f.submit 'Post Listing' %></div>
<%- end -%>
</div>
Run Code Online (Sandbox Code Playgroud)
当用户选择文件但表单因验证失败时,他必须始终重新选择该文件.它不粘.有关如何解决此问题的任何建议?
谢谢!
我在我的applicationDidFinishLaunching中有这个代码:
navController.toolbarHidden = NO;
[navController toolbar].tintColor = [UIColor darkGrayColor];
[[navController toolbar] setFrame:CGRectMake(0.0,0.0,320.0,180.0)];
Run Code Online (Sandbox Code Playgroud)
前两行肯定会对UI产生影响.例如,如果我将toolbarHidden设置为YES,它肯定是隐藏的.但是,当我尝试设置框架并自定义工具栏高度时,不会发生任何更改.有谁知道如何解决这一问题?
我正在使用Ryan Bate的CanCan gem来定义能力,而一些基本功能正在失败.我有一个产品型号和产品控制器,我的索引操作如下所示:
def index
@req_host_w_port = request.host_with_port
@products = Product.accessible_by(current_ability, :index)
end
Run Code Online (Sandbox Code Playgroud)
当我尝试使用该accessible_by方法检索产品时出现错误,我收到此错误:
Cannot determine SQL conditions or joins from block for :index Product(id: integer, secret: string, context_date: datetime, expiration_date: datetime, blurb: text, created_at: datetime, updated_at: datetime, owner_id: integer, product_type_id: integer, approved_at: datetime)
Run Code Online (Sandbox Code Playgroud)
我的能力课看起来像这样:
can :index, Product do |product|
product && !!product.approved_at
end
Run Code Online (Sandbox Code Playgroud)
这看起来像一个非常简单的例子,所以我很惊讶它失败了,想知道我是否忽略了一些简单的事情(即我盯着我的代码太长时间).
我做了更多的探测并进行了一个简单的测试.如果你看下面的代码,一个例子工作正常,一个失败,他们应该实际做同样的事情.
# This works
can :index, Product, :approved_at => nil
# This fails
can :index, Product do |product|
product && product.approved_at.nil?
end
Run Code Online (Sandbox Code Playgroud)
所以问题似乎在于CanCan正在处理这些块的方式.我更深入地进入库并找到错误的位置 …
我的套接字文件位于:
/var/run/mysqld/mysqld.sock
Run Code Online (Sandbox Code Playgroud)
当我做:
rake thinking_sphinx:start
Run Code Online (Sandbox Code Playgroud)
我明白了:
rake aborted!
Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)
Run Code Online (Sandbox Code Playgroud)
我想告诉think_sphinx我的套接字文件在哪里.这怎么可能?在Slicehost上执行我的切片硬重启后出现此问题.
我有一个拥有_may:people的MailingList模型
对于我的大多数应用程序,我只想让那些活跃的人
所以@mailing_list.people应该只返回活跃的人
在我的模型中,我做不到
def people
self.people.find_all{ |p| !p.activated_at.nil? }
end
Run Code Online (Sandbox Code Playgroud)
因为这一直在呼唤着自己.什么是ruby/rails自动过滤人的方式.另一个可能的问题是我认为self.people返回一个活动记录对象数组,self.people.find_all...返回一个数组.这将导致我的一些代码中断.这很容易修复,但有没有办法返回活动的记录对象?有选择会很高兴.
谢谢!