好吧,所以这是交易.我有两个表和一个连接表,因为它是一个多对多的关系.我有订单,订单可以有很多产品.显然,它是另一种方式,因为产品可以在许多订单上.我有以下课程:
class Order < ActiveRecord::Base
has_many :orders_products
has_many :products, :through => :orders_products
end
class OrderProduct < ActiveRecord::Base
belongs_to :order
belongs_to :product
end
class Product < ActiveRecord::Base
has_many :orders_products
has_many :orders, :through => :orders_products
end
Run Code Online (Sandbox Code Playgroud)
我正在显示一个页面,我可以输入内容,当我通过保存的订单与产品进行交互时,@order.products
我收到以下错误:
SQLite3::SQLException: no such table: order_products: SELECT "products".* FROM "products" INNER JOIN "order_products" ON "products".id = "order_products".product_id WHERE (("order_products".order_id = 1))
Run Code Online (Sandbox Code Playgroud)
我的连接表已命名orders_products
,但您可以看到它正在尝试加入order_products
.我对Rails命名约定的有限知识告诉我,这orders_products
是命名它的正确方法,然后将我的模型命名为OrderProduct
.我真的在这个墙上碰到了一堵墙.
编辑:我看到即使它保存了我的订单它我选择了多个复选框它没有保存orders_products
表中的任何值,大概是因为它现在错误的原因相同.
我想知道是否有一种简单的方法可以在我的所有spec文件中包含存根.我正在使用Geocoder gem,当我运行RSpec测试时,我不希望它尝试下载位置信息.
我发现以下解决方案完美无缺.但是,我不想在每个spec文件中写相同的三行.
before(:each) do
User.any_instance.stub(:geocode) { [1,1] }
end
Run Code Online (Sandbox Code Playgroud)
可以在我的spec_helper.rb
文件中放一些东西吗?
我正在构建一个类似于Wufoo的rails应用程序.注册后,您将获得一个子域名,您可以登录主页.该应用程序正在运行,因此当您登录时,您将被重定向到您的子域.问题是我无法删除两个域上的会话.如果您注销(username.myapp.com),它将保持登录状态(myapp.com),反之亦然.
现在我正在使用session[:user_id] = nil
删除会话.有没有办法删除所有域中的所有会话.
另外,我附加:domain => :all
到我的session_store.rb
文件,所以我可以保持登录多个子域.
我创建了一个提供搜索条件的表单:
= search_form_for @q do |f|
%h3
Search:
= f.label :category_id
%br
= f.collection_select :category_id_eq, Category.all, :id, :name, :include_blank => true
%br
= f.label "Sub-Category"
%br
= f.collection_select :subcategory_id_eq, Subcategory.all, :id, :name, :include_blank => true, :prompt => "select category!"
%br
= f.label "Contains"
%br
= f.text_field :title_or_details_cont
%br
= f.submit
Run Code Online (Sandbox Code Playgroud)
我希望能够根据Rails Geocoder gem的"Near"功能进行搜索.有没有人知道如何合并现有的范围,或者特别是如何在Meta Search或Ransack中使用"近"范围?
到目前为止,我的所有尝试都是徒劳的.
我只是使用openlayer制作地图
我用自己的自制在OpenLayers制作了一张地图
但令我困惑的是,我无法将jQuery与OpenLayers集成,我在这里创建了一个简单的jQuery函数 show / hide ()
我试着点击中的OpenLayers地图标记,我发了,其中有ID的一个#OL_Icon_43
内部div#map
的OpenLayers,我试图做功能hide()
在使用jQuery <head>
,将隐藏标签之外的标签标签#map
,但是,这并不为我工作
你能帮我吗 ?
这是我制作jquery代码的视图:
$(document).ready(function(){
$("#OL_Icon_43").click(function() {
$("footer").hide();
});
});
Run Code Online (Sandbox Code Playgroud) 什么是最简洁的方法来确定是否@hash[:key1][:key2]
已定义,如果@hash
或@hash[:key1]
为零,则不会抛出错误?
defined?(@hash[:key1][:key2])
如果@hash[:key1]
存在则返回True (它不确定是否:key2
已定义)
我有以下HTML并想使用Bootstrap的按钮插件 - http://twitter.github.com/bootstrap/javascript.html#buttons来选择"value"元素:
<div class="btn-group pull-right nav-tabs" data-toggle="buttons-radio">
<button class="btn" value="60">Hour</button>
<button class="btn" value="1440">Day</button>
<button class="btn" value="10080">Week</button>
<button class="btn" value="43200">30 Day</button>
</div>
Run Code Online (Sandbox Code Playgroud)
我有以下JavaScript成功执行onClick,但返回undefined.
$('.nav-tabs').button().click( function(e){
var selected = $(this).attr('value');
console.log(selected);
});
Run Code Online (Sandbox Code Playgroud)
任何人都可以建议我如何从HTML获取"价值"元素?
我的大多数问题都是理论性的,因为我认为"伟大的思想讨论思想"和职员讨论语法.
无论如何..所以这是情况
我有一个系统从用户那里获取输入.但是在查询中根本没有使用该输入(根本没有).此输入包含许多代码段.现在在过去我转义了输入,然后将其存储在数据库中.我不使用任何类型的添加和剥离斜杠函数,而是使用我自己的程序,使用preg_replace,如下所示
$data = preg_replace("/\;/", ";", $data);//
$data = preg_replace("/</", "<", $data);
$data = preg_replace("/>/", ">", $data);
$data = preg_replace("/\"/", """,$data);
$data = preg_replace("/\(/", "(", $data);
Run Code Online (Sandbox Code Playgroud)
但是发生了以下问题.
有时软件会错误地逃避数据(因为我的软件没有错误),我无法找到实际数据.我不时更新我的转义程序,这意味着不同的输入被转义不同.
用户可以选择编辑他的帖子.因此,这意味着我必须向他提供转义数据(或取消数据)以防止数据转发两次......最后我得出的结论是,我将来自用户的未转义数据直接保存到数据库.并在显示之前将其转义(它没有其他用途..在查询等中没有用).对于任何其他事情我没有改变原始数据.
我的问题::
即使在查询中没有使用或在显示之前转义,数据库中未转义的用户数据仍然是危险的???
正在使用斜杠等于/更好/不同而不是通过追逐字符来逃避,例如<into <..
如果数据被正确转义(我的意思是所有特殊字符),它仍然可以用于XSS攻击.SQL注入是不可能的.
我需要覆盖 laravel 的默认登录功能,但是我对我在那里找到的代码感到困惑。我不明白 laravel AuthenticatesUsers.php 如何验证用户是否存在于 db 中,然后对用户进行身份验证。
我在AuthenticatesUsers.php 中使用了这个函数
/**
* Attempt to log the user into the application.
*
* @param \Illuminate\Http\Request $request
* @return bool
*/
protected function attemptLogin(Request $request)
{
return $this->guard()->attempt(
$this->credentials($request), $request->filled('remember')
);
}
Run Code Online (Sandbox Code Playgroud)
我想我需要在 auth/LoginController.php 中覆盖这个函数
但我不明白它是如何工作的。在哪里guard()
和attempt()
实施,我想真正的行动发生在那里。我需要为登录添加另一个条件。
有人了解laravel的默认登录是如何工作的吗?和这两个功能guard()
和attempt()
,例如尝试在 AuthenticatesUsers.php 本身内部没有实现,我相信它的这个函数我应该真正覆盖。
我在哪里可以找到它的实现?
首先是警告。我是一个总的 RoR n00b,但我有编程经验,所以我得到了基本的。我有一个正在构建的应用程序,我需要为其构建一个复杂的搜索引擎。基本布局是指南>> 个人资料>> 指导>> MentorAreas。下面是每个模型的代码,然后是我正在尝试构建的代码。我的问题是我似乎无法找出正确的对象名称来让搜索引擎搜索mentor_areas。
系统设置:
rails -v :: Rails 3.1.1
ruby -v :: ruby 1.9.2p180 (2011-02-18 revision 30909) [x86_64-darwin10.7.0]
RanSack :: ransack (0.5.8) from git://github.com/ernie/ransack.git (at master)
Run Code Online (Sandbox Code Playgroud)
指导:
class Guide < User
end
Run Code Online (Sandbox Code Playgroud)
用户:(相关内容)
class User < ActiveRecord::Base
# Include default devise modules. Others available are:
# :token_authenticatable, :encryptable, :confirmable, :lockable, :timeoutable and :omniauthable
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :trackable, :validatable
# Virtual attribute for authenticating by either username or email
# This is in addition to a …
Run Code Online (Sandbox Code Playgroud) javascript ×2
jquery ×2
php ×2
ransack ×2
activerecord ×1
associations ×1
defined ×1
hash ×1
laravel ×1
laravel-5 ×1
mysql ×1
openlayers ×1
rspec ×1
ruby ×1
subdomain ×1