标签: model

Rails 自定义模型函数

我正在上数据库课程,讲师希望我们开发电子商务应用程序。她说我们可以使用我们喜欢的任何框架,现在我们已经过了学期的一半,她认为 Rails 做的太多,并希望我明确地编写我的 SQL 查询。

所以,我想做的是编写自己的函数并将它们添加到模型中,以基本上复制现有的功能(但使用我自己编写的 SQL)。

那么问题就变成了:

  1. 如何在模型内执行手动创建的查询?
  2. 如何将结果填充到一个空对象中,然后我可以返回并在视图中使用它?

另外,我知道这是多么糟糕的做法,我只是不想在这一点上从头开始使用 PHP。

ruby sql model ruby-on-rails

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

如何在 Rails 中创建模型

我正在使用 parseresource gem,它说我需要创建一个模型。

创建模型:

class Post < ParseResource
  fields :title, :author, :body

  validates_presence_of :title
end
Run Code Online (Sandbox Code Playgroud)

我只知道如何生成一个模式,它总是继承 ActiveRecord::Base。我应该在命令行中输入什么来创建这个模型?

gem model ruby-on-rails

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

Ruby on Rails常量化方法

我在模型中遇到以下问题:

class Search < ActiveRecord::Base
  #search different system user by dn
  def self.gets(sys, dn)
    sys.constantize.search(dn)
  end
end
Run Code Online (Sandbox Code Playgroud)

我可以看到,目的是传递不同的模型名称,sysdn在这些特定模型中进行搜索。但是,我constantize在Ruby中进行了搜索,看不到有关此用法的任何详细说明。

ruby model ruby-on-rails

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

在为模型定义构造函数时,Laravel 5.3软删除不起作用

我的模型测试如下

namespace App;

use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes;
class Test extends Model
{
use SoftDeletes;
protected $dates = ['deleted_at'];
public function __construct() {
    if (!\App::environment('production')) {
        $this->table='test_stage';
    }
}
Run Code Online (Sandbox Code Playgroud)

我确保test_stage表中有一个'deleted_at'列.但软删除不起作用.使用delete()方法永久删除表中的记录.作为验证的附加步骤,我手动为某些列添加了"deleted_at"值.但查询模型仍然给我软删除记录.

此外,完全删除模型构造函数,并使用以下命令定义表名:

protected $table = 'test_stage';
Run Code Online (Sandbox Code Playgroud)

奇迹般有效!那是软删除神奇地再次开始工作.

或者有没有办法根据环境定义表名而无需定义构造函数?

model laravel laravel-5

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

如何使用Ruby on Rails中的回形针创建模型具有无限图像?

我有一个具有头像的用户模型.Paperclip用于允许图像上传.但是,我希望用户能够上传尽可能多的图像(无限制).如何修改我的模型以允许此类行为?用户模型如下所示:

class Model < ApplicationRecord
  has_attached_file :pic, styles: { medium: "420×633!", thumb: "100x100#" }, default_url: "/images/:style/missing.png"
  validates_attachment_content_type :pic, content_type: /\Aimage\/.*\z/
  has_many :reviews, dependent: :destroy 
Run Code Online (Sandbox Code Playgroud)

提前致谢 !

ruby model ruby-on-rails paperclip

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

PHP-使用MVC构建Slim3 Web应用程序并了解模型的作用

我正在尝试使用Slim3框架以及Twig模板系统在php中创建一个身份验证系统,对于数据库,我正在使用MySQL和PDO。我也在尝试使用模型视图控制器设计模式来实现它。但是我很难理解如何为Web应用程序使用MVC结构。我在网上查看了过多的解释,似乎没有明确的答案。很多人说要使用PHP框架,例如Laravel,Symfony或CodeIgniter,因为他们显然采用了类似MVC的结构。但是,我宁愿保持简单,并手动编写代码,而不是使用框架。

我目前对MVC有两种解释。此图中描绘了第一个:

在此处输入图片说明

我看到的另一种解释是:(摘自该YouTube视频

在此处输入图片说明

我已经做了研究。问题和答案,如这个是有帮助的。但是我仍然不确定如何构造自己的应用程序,特别是识别和理解MVC的模型方面。现在,我将说明身份验证应用程序的注册过程。这样您就知道我的代码是如何工作的。

首先,我有一个SQLQueries类,该类将一系列SQL语句简单地放入函数中。然后,我有一个SQLWrapper类,该类具有的功能可以例如在数据库中存储新用户的详细信息。此类还从SQLQueries类调用函数。我也有一个ValidateSanitize类,该类具有清理用户输入以及检查用户输入在表单中是否有效的功能。我认为这三个类是MVC模型方面的一部分,但我不确定。我看到了许多其他的使用“用户模型类”的教程,但我的应用程序中找不到它们。

我的视图只是显示HTML的Twig模板,例如主页,注册,登录等。然后我有了控制器。我打算让多个控制器执行不同的操作。目前,我只实现了AuthController,该控制器负责注册和登录用户。

因此,AuthController要做的第一件事是在名为getRegisterForm的函数中显示注册表。用户提交表单后,postRegisterForm函数将获取该用户输入并将其分配给有污染的变量。

public function postRegisterForm($request, $response)  
{
   $arr_tainted_params = $request->getParsedBody(); 

   $tainted_email = $arr_tainted_params['email'];  it a variable
   $tainted_username = $arr_tainted_params['username'];
   $tainted_password = $arr_tainted_params['password'];
   $tainted_password_confirm = $arr_tainted_params['password_confirm'];
Run Code Online (Sandbox Code Playgroud)

接下来,实例化所有前面的三个类以及数据库详细信息,以便可以在AuthController中使用它们的功能:

$sanitizer_validator = $this->container->ValidateSanitize;
$sql_wrapper = $this->container->SQLWrapper;
$sql_queries = $this->container->SQLQueries;
$db_handle = $this->container->get('dbase');
Run Code Online (Sandbox Code Playgroud)

然后,使用sanitize_input函数清除受污染的用户详细信息。然后,将清理后的用户详细信息输入到validate函数中,以确保它们不会触发任何验证冲突。密码也在此处散列:

$cleaned_email = $sanitizer_validator->sanitize_input($tainted_email, FILTER_SANITIZE_EMAIL); 
$cleaned_username = $sanitizer_validator->sanitize_input($tainted_username, FILTER_SANITIZE_STRING);
$cleaned_password = $sanitizer_validator->sanitize_input($tainted_password, FILTER_SANITIZE_STRING);
$cleaned_password_confirm = $sanitizer_validator->sanitize_input($tainted_password_confirm, FILTER_SANITIZE_STRING);

$hashed_cleaned_password = password_hash($cleaned_password, PASSWORD_DEFAULT); 

$sanitizer_validator->check_email_exists($cleaned_email);
$sanitizer_validator->validate_email($cleaned_email);
$sanitizer_validator->validate_username($cleaned_username);
$sanitizer_validator->validate_password($cleaned_password);
$sanitizer_validator?validate_password_confirm($cleaned_password_confirm);
Run Code Online (Sandbox Code Playgroud)

最后,有一个if语句,检查所有验证错误消息是否为空。如果是的话,我们将为SQLWrapper类提供数据库详细信息以及SQLQueries类对象。然后,通过调用SQLWrapper类store-details函数将用户详细信息插入数据库。最后,我们将用户定向到登录页面,以便用户可以登录其新注册的帐户。

if ($sanitizer_validator->get_validate_messages('email_error') == ' …
Run Code Online (Sandbox Code Playgroud)

php model-view-controller design-patterns model slim-3

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

为什么在不使用任何光源的情况下在Three.js中可以看到3d模型?

是)我有的

如下图所示,我使用Three.js库创建WEBGL画布,并使用GLTFLoader.js在场景中加载.gltf模型。

演示图片

我使用的代码

//Add THREE Renderer
renderer_Main = new THREE.WebGLRenderer({ antialias: true });
renderer_Main.setSize(canvasWidth, canvasHeight); //Set Renderer Size

//Add THREE Scene
scene_Main = new THREE.Scene();

//Add First THREE Camera
camera_Main = new THREE.PerspectiveCamera(45, window.innerWidth / window.innerHeight, 0.01, 10000);
camera_Main.position.set(-2000, 500, 500); //Set camera position

//Add THREE Grid Helper
var size = 1000; //Value of Each Square Size 
var divisions = 60; //Value of Grid Divisions 
gridHelper = new THREE.GridHelper(size, divisions);
gridHelper.material.opacity = 0.045;
gridHelper.material.transparent = false;
scene_Main.add(gridHelper); //Add Grid in …
Run Code Online (Sandbox Code Playgroud)

javascript 3d model light three.js

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

@Inject和@ValueMapValue批注之间的区别

在阅读有关使用模型的AEM文档时,我无法弄清楚该字段上方的@Inject@ValueMapValue注释之间的区别

我尝试使用两者,并且两者看起来都一样,所以我一定缺少一些东西。

java model sling aem

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

Laravel - how get a single model instance not as collection, but single model from belongsToMany

I have this relation defined in one of my models. It is the simplest possible case.

use \App\Models\Related;

public function entities()
{
    return $this
           ->belongsToMany(Entity::class, 'entity_related', 'related_id', 'entity_id');
}
Run Code Online (Sandbox Code Playgroud)

Now, I want to create a relation which gets only one model from the table.

Current solution

我只是定义了相同的关系,但使用->take(1)。粗暴,但行得通。该解决方案的低迷之处在于,我需要做一个foreach循环以获得所需的单个模型。

use \App\Models\Entity;

public function firstOfEntities()
{
    return $this
           ->belongsToMany(Entity::class, 'entity_related', 'related_id', 'entity_id')
           ->take(1); // <---
}
Run Code Online (Sandbox Code Playgroud)

去做

如何正确定义仅获取一个(几乎任何一个)模型实例的关系,而不是创建一个集合?

理想的用法

完成上述操作后,我希望能够在foreach循环内在模板文件中使用单个模型:

@foreach($object as $o)
    <h2>{{ $o->singleEntity->name }}</h2>
    <p>{{ …
Run Code Online (Sandbox Code Playgroud)

php model relation laravel laravel-5

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

如何在rubyonrails中命名外键?

我解释我的问题:

我有2个型号:

- User (id, firstname, lastname, deviceid, email, password);
- Message (id, fromuser, touser, description)
Run Code Online (Sandbox Code Playgroud)

我想要外键:

-: fromuser (Message) -> id (User)
-: touser (Message) -> id (User)
Run Code Online (Sandbox Code Playgroud)

在我的模型中:

USER
-> has_many :messages

MESSAGE
-> belongs_to :users
Run Code Online (Sandbox Code Playgroud)

在我的架构迁移中:

create_table "messages", force: :cascade do |t|
t.string "description"
t.integer "fromuser"
t.integer "touser"
t.datetime "created_at", precision: 6, null: false
t.datetime "updated_at", precision: 6, null: false
end

create_table "users", force: :cascade do |t|
t.string "firstname"
t.string "lastname"
t.string "deviceid"
t.string "email"
t.string "password" …
Run Code Online (Sandbox Code Playgroud)

ruby rubygems controller model ruby-on-rails

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